рд╕реНрд╡рд┐рдЪ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реИ?

рдмреНрд░рд╛рдВрдЪрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдФрд░ рдЕрдЬреАрдм рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡рд┐рднрд┐рдиреНрди рдмрд╛рд╣рд░реА рдкреНрд░рднрд╛рд╡реЛрдВ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдПрдХ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдпрд╣ рд╕рдм рдмрд┐рдирд╛ рдмреНрд░рд╛рдВрдЪ рдХреЗ рдЕрд╕рдВрднрд╡ рд╣реИред рдЕрдЧрд░ рдФрд░ рд╕реНрд╡рд┐рдЪ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╢рд╛рдЦрд╛рдПрдВ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИрдВред рддреЛ рдЖрдк рдЙрд╕рд╕реЗ рдХреНрдпреЛрдВ рд▓рдбрд╝реЗрдВ?

рд╕рдордп-рд╕рдордп рдкрд░, рдХрд┐рд╕реА рдФрд░ рдХреЗ рдХреЛрдб рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рджреМрд░рд╛рди, рдореИрдВ рд▓рдВрдмреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реВрдВ рдФрд░ рдЕрдЧрд░ рдФрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рдмреЛрдЭрд┐рд▓ рдирд┐рд░реНрдорд╛рдг рд╣реЛрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ:

//     Objective C,           - (NSUInteger)numberOfItemsInSection:(NSUInteger)section { if (self.loggedIn) { swtich (section) { case 0: return 2; case 1: { if (self.settings.showDetails) { return 5; } else { return 3; } } case 2: return 3; } } else { swtich (section) { case 1: { if (self.settings.showDetails) { return 5; } else { return 3; } } case 2: return 3; } } } 


рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдЗрд╕ рддрд░рд╣ рдХреЗ рддрд░реАрдХреЗ рдореБрдЭреЗ рдбрд░рд╛рддреЗ рд╣реИрдВ рдФрд░ рд╡реЗ рд╕рд┐рд░реНрдл рдореЗрд░реЗ рд╕рд┐рд░ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рд╕рднреА рдЬрд╛рджреБрдИ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдирд╛рдо рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:

 enum SectionIndex { LoginSection = 0, DetailsSection, ExtendedSection } 


рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдмрд╛рд░реАрдХреА рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕реНрд╡рдпрдВ рдХреЛ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧ рдЗрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рд╕реНрд╡ред рд▓реЗрдХрд┐рди рд╣рдо рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реЗрдХреНрд╢рди рд╡реИрд▓реНрдпреВ рдХреЛ рд╕реЗрдХреНрд╢рдирдЖрдИрдВрдбреЗрдХреНрд╕ рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ:

 - (SectionIndex)sectionIndexForSection:(NSUInteger)section { if (!self.loggedIn) { ++section; } if (!self.settings.showDetails) { ++section; } return (SectionIndex)section; } - (NSUInteger)numberOfItemsInSection:(NSUInteger)section { SectionIndex sectionIndex = [self sectionIndexForSection:section]; switch (sectionIndex) { case LoginSection: return [self numberOfItemsInLoggedInSection]; case DetailsSection: return [self numberOfItemsInDetailsSection]; case ExtendedSection: return [self numberOfItemsInExtendedSection] } } } 


рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рд╡рд╕реНрддреБ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдХрдИ рд╢рд╛рдЦрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, -TitleForItem: inSection: -performActionForItem: inSection рдЗрддреНрдпрд╛рджрд┐ред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдпрд╣ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╣рдорд╛рд░реА рднрд╛рд╖рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рд╣реИ, рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕реНрдерд┐рддрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ-рд╕реНрдЯреЗрдЯ рдореЗрдВ рджрд░реНрдЬ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ? рдлрд┐рд░ рдЗрди рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдШрдЯрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рд░рд╛рдЬреНрдп рд╡рд╕реНрддреБ рддрдХ рдкрд╣реБрдВрдЪ?

 - (NSUInteger)numberOfSections { retun [self.state numberOfSections]; } - (NSUInteger)numberOfItemsInSection:(NSUInteger)section { retun [self.state numberOfItemsInSection:section]; } - (NSString *)titleForItem:(NSUInteger)item inSection:(NSUInteger)section { retun [self.state titleForItem:item inSection:section]; } - (void)performActionForItem:(NSUInteger)item inSection:(NSUInteger)section { retun [self.state performActionForItem:item inSection:section]; } 


рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдХрд╛рдлреА рд╕реБрдВрджрд░ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕ рд░рд╛рдЬреНрдп рдХреЛ рдХрд╣реАрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд░рд╛рдЬреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрд╡рдпрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдХрдИ рдХрдХреНрд╖рд╛рдПрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

 @interface State : NSObject @property (nonatomic, strong) NSArray *sections; // ... @end @implementation State - (NSUInteger)numberOfSections { return [self.sections count]; } - (NSUInteger)numberOfItemsInSection:(NSUInteger)section { return [self.sections[section] count]; } - (NSString *)titleForItem:(NSUInteger)item inSection:(NSUInteger)section { return self.sections[section][item][@"title"]; } - (void)performActionForItem:(NSUInteger)item inSection:(NSUInteger)section { void(^actionBlock)() = self.sections[section][item][@"action"]; actionBlock(); } //   - (void)setupForState { NSMutableDictionary *state = [NSMutableDictionary dictionary]; if (self.loggedIn) { [state addObject:[self loggedInSection]]; } if (self.showDetails) { [state addObject:[self detailsSection]]; } [state addObject:[self extendedSection]]; self.sections = state; } - (NSArray *)loggedInSection {...} - (NSArray *)detailsSection {...} - (NSArray *)extendedSection {...} // ... 


рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдХрдИ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рдЗрд╕реЗ рдПрдХ рд░рд╛рдЬреНрдп рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛, рдФрд░ рд░рд╛рдЬреНрдпреЛрдВ рдиреЗ рдЦреБрдж рдХреЛ рдПрдХ рд╕реНрдерд╛рди рдкрд░ рдЕрднрд┐рдиреНрди, рд╕рдордЭрдиреЗ рдФрд░ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ред

Source: https://habr.com/ru/post/In218119/


All Articles