cell = [tableView dequeueReusableCellWithIdentifier: CellIdentifier
forIndexPath: indexPath];
cell.textLabel.text = [[NSString alloc]
initWithFormat:@"Section %ld Cell %ld",
(long)indexPath.section,
(long)indexPath.row];
return cell;
}
β (void)viewDidLoad{
[super viewDidLoad];
self.myTableView = [[UITableView alloc]
initWithFrame: self.view.bounds
style: UITableViewStylePlain];
[self.myTableView registerClass: [UITableViewCell class]
forCellReuseIdentifier: CellIdentifier];
self.myTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleHeight;
self.myTableView.dataSource = self;
self.myTableView.delegate = self;
[self.view addSubview: self.myTableView];
}
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΡΡΠΈ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΡ ΡΠ°Π½Π΅Π΅ ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π² ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π΅ UITableViewDelegate, ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ (ΡΠΈΠΏΠ° SEL) Π² ΡΡΡΠΎΠΊΡ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π²ΡΠ²Π΅Π΄Π΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»Ρ:
β (BOOL) tableView:(UITableView *)tableView
shouldShowMenuForRowAtIndexPath:(NSIndexPath *)indexPath{
/* Π Π°Π·ΡΠ΅ΡΠ°Π΅ΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ΅ΠΉΠΊΠΈ */
return YES;
}
β (BOOL) tableView:(UITableView *)tableView
canPerformAction:(SEL)action
forRowAtIndexPath:(NSIndexPath *)indexPath
withSender:(id)sender{
NSLog(@"%@", NSStringFromSelector(action));
/* ΠΠΎΠΊΠ° ΡΠ°Π·ΡΠ΅ΡΠΈΠΌ Π»ΡΠ±ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. */
return YES;
}
β (void) tableView:(UITableView *)tableView
performAction:(SEL)action
forRowAtIndexPath:(NSIndexPath *)indexPath
withSender:(id)sender{
/* ΠΠΎΠΊΠ° ΠΎΡΡΠ°Π²ΠΈΠΌ ΠΏΡΡΡΡΠΌ. */
}
Π ΡΠ΅ΠΏΠ΅ΡΡ Π·Π°ΠΏΡΡΡΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠΌΡΠ»ΡΡΠΎΡΠ΅ ΠΈΠ»ΠΈ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π΅. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ Π² ΡΠ°Π±Π»ΠΈΡΠ½ΡΠΉ Π²ΠΈΠ΄ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ ΡΡΠΈ ΡΡΠ΅ΠΉΠΊΠΈ. Π£Π΄Π΅ΡΠΆΠΈΠ²Π°ΠΉΡΠ΅ Π½Π° ΡΡΠ΅ΠΉΠΊΠ΅ ΠΏΠ°Π»Π΅Ρ (Π΅ΡΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ) ΠΈΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΌΡΡΠΈ (Π΅ΡΠ»ΠΈ Ρ ΡΠΌΡΠ»ΡΡΠΎΡΠΎΠΌ) ΠΈ ΡΠΌΠΎΡΡΠΈΡΠ΅, ΠΊΠ°ΠΊΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π² ΠΎΠΊΠ½Π΅ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
cut:
copy:
select:
selectAll:
paste:
delete:
_promptForReplace:
_showTextStyleOptions:
_define:
_addShortcut:
_accessibilitySpeak:
_accessibilitySpeakLanguageSelection:
_accessibilityPauseSpeaking:
makeTextWritingDirectionRightToLeft:
makeTextWritingDirectionLeftToRight:
ΠΡΠ΅ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ° iOS ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ²Π΅ΡΡΠΈ Π½Π° ΡΠΊΡΠ°Π½ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ. ΠΠΎΠΏΡΡΡΠΈΠΌ, Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Copy). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΉΠ΄ΠΈΡΠ΅ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ tableView: canPerformAction: forRowAtIndexPath: withSender:, Π½Π° ΠΊΠ°ΠΊΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ Ρ Π²Π°Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ° iOS, Π° ΠΏΠΎΡΠΎΠΌ Π²Π΅ΡΠ½ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ YES ΠΈΠ»ΠΈ NO:
β (BOOL) tableView:(UITableView *)tableView
canPerformAction:(SEL)action
forRowAtIndexPath:(NSIndexPath *)indexPath
withSender:(id)sender{
if (action == @selector(copy:)){
return YES;
}
return NO;
}
ΠΠ° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΡΠ°ΠΏΠ΅ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°Π΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π±ΡΠ» Π²ΡΠ±ΡΠ°Π½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠΌ ΠΌΠ΅Π½Ρ. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²ΡΡΡΠ½ΠΈΡΡΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ²Π΅ΡΡΠΈΡΡ Π½ΡΠΆΠ½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ±Π΅ΡΠ΅Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠΌ ΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Copy (ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ) (ΡΠΈΡ. 4.11), ΠΌΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ UIPasteBoard, ΡΡΠΎΠ±Ρ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡ ΡΡΠ΅ΠΉΠΊΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΉ Π±ΡΡΠ΅Ρ ΠΈ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π΅Π΅ ΠΏΠΎΠ·ΠΆΠ΅:
β (void) tableView:(UITableView *)tableView
performAction:(SEL)action
forRowAtIndexPath:(NSIndexPath *)indexPath
withSender:(id)sender{
if (action == @selector(copy:)){
UITableViewCell *cell = [tableView cellForRowAtIndexPath: indexPath];
UIPasteboard *pasteBoard = [UIPasteboard generalPasteboard];
[pasteBoard setString: cell.textLabel.text];
}
}
Π ΠΈΡ. 4.11. ΠΠΎΠΌΠ°Π½Π΄Π° Copy (ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ), ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π½Π°Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠΌ ΠΌΠ΅Π½Ρ ΡΡΠ΅ΠΉΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°
4.7. ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π΅ΠΊ ΠΈ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ² Π² ΡΠ°Π±Π»ΠΈΡΠ½ΡΡ Π²ΠΈΠ΄Π°Ρ
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ ΠΈ ΡΠ°ΡΠΎΠ²Π°ΡΡ ΡΡΠ΅ΠΉΠΊΠΈ ΠΈ ΡΠ°Π·Π΄Π΅Π»Ρ Π²Π½ΡΡΡΠΈ ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°Ρ Π²Π΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠ»Π°Π²Π½ΠΎΠΉ ΠΈ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠΉ Π°Π½ΠΈΠΌΠ°ΡΠΈΠ΅ΠΉ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ moveSection: toSection: ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΡΠ°Π·Π΄Π΅Π» Π½Π° Π½ΠΎΠ²ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ moveRowAtIndexPath: toIndexPath:, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ ΡΡΠ΅ΠΉΠΊΡ ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π½Π° Π½ΠΎΠ²ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Ρ ΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠ½Π° ΡΠ΅ΠΉΡΠ°Ρ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ.
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
ΠΡΠΎΡΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ² ΠΈ ΡΡΠ΅Π΅ΠΊ ΡΠ°Π±Π»ΠΈΡΡ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΈΡ Π·Π°ΠΌΠ΅Π½Ρ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠΌΠΎΠ³Π°ΡΡΠΈΠΉ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΡΡΡ ΡΡΡ ΡΠ°Π·Π½ΠΈΡΡ. ΠΠΎΠΏΡΡΡΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ°Π±Π»ΠΈΡΠ½ΡΠΉ Π²ΠΈΠ΄ Ρ ΡΡΠ΅ΠΌΡ ΡΠ°Π·Π΄Π΅Π»Π°ΠΌΠΈ, A, B ΠΈ C. ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ½ΡΡΡ ΡΠ°Π·Π΄Π΅Π» A ΠΊ ΡΠ°Π·Π΄Π΅Π»Ρ C, ΡΠΎ ΡΠ°Π±Π»ΠΈΡΠ½ΡΠΉ Π²ΠΈΠ΄ Π·Π°ΠΌΠ΅ΡΠΈΡ ΡΡΠΎ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡ ΡΠ°Π·Π΄Π΅Π» B ΡΡΠ΄Π°, Π³Π΄Π΅ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΠ»ΡΡ ΡΠ°Π·Π΄Π΅Π» A. ΠΠΎ Π΅ΡΠ»ΠΈ ΡΠ°Π·Π΄Π΅Π» B Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ Π½Π° ΠΌΠ΅ΡΡΠΎ ΡΠ°Π·Π΄Π΅Π»Π° C, ΡΠΎ ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠΌΡ Π²ΠΈΠ΄Ρ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ ΡΠ°Π·Π΄Π΅Π» A, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Β«Π²ΡΡΠ΅Β» Π΄Π²ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΠΌΡΡ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ² ΠΈ Π½Π΅ ΡΡΠ°ΡΡΠ²ΡΠ΅Ρ Π² ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡΡ B ΠΈ C. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°Π·Π΄Π΅Π» B ΠΏΠΎΠΏΠ°Π΄Π΅Ρ Π½Π° ΠΌΠ΅ΡΡΠΎ ΡΠ°Π·Π΄Π΅Π»Π° C, Π° ΡΠ°Π·Π΄Π΅Π» C β Π½Π° ΠΌΠ΅ΡΡΠΎ ΡΠ°Π·Π΄Π΅Π»Π° B. Π’Π°ΠΊΠ°Ρ ΠΆΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ½ΡΡ Π²ΠΈΠ΄Π°Ρ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ ΡΡΠ΅Π΅ΠΊ.
ΠΠ»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ ΡΠ°ΠΊΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°Π±Π»ΠΈΡΠ½ΡΠΉ Π²ΠΈΠ΄ ΠΈ Π·Π°Π³ΡΡΠ·ΠΈΠΌ Π² Π½Π΅Π³ΠΎ ΡΡΠΈ ΡΠ°Π·Π΄Π΅Π»Π°, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π΅ΡΡΡ ΡΡΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΠ΅ΠΉΠΊΠΈ. ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΡΠ°ΠΉΠ»Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π²ΠΈΠ΄Π°:
#import Β«ViewController.hΒ»
static NSString *CellIdentifier = @"CellIdentifier";
@interface ViewController () <UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, strong) UITableView *myTableView;
@property (nonatomic, strong) NSMutableArray *arrayOfSections;
@end
ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π²ΠΈΠ΄Π° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°. Π ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π΅ΡΡΡ ΡΠ°Π·Π΄Π΅Π»Ρ, Π° Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ β ΡΡΠ΅ΠΉΠΊΠΈ. ΠΡ, Π² ΡΡΡΠ½ΠΎΡΡΠΈ, ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²: ΠΌΠ°ΡΡΠΈΠ² ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°Π·Π΄Π΅Π»Ρ, Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·Π΄Π΅Π», Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌ ΡΡΠ΅ΠΉΠΊΠΈ. ΠΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΡΡΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ arrayOfSections, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠΉ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π²ΠΈΠ΄Π°. ΠΡΠ°ΠΊ, Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΡΠΎΡ ΠΌΠ°ΡΡΠΈΠ²:
β (NSMutableArray *) newSectionWithIndex:(NSUInteger)paramIndex
withCellCount:(NSUInteger)paramCellCount{
NSMutableArray *result = [[NSMutableArray alloc] init];
NSUInteger counter = 0;
for (counter = 0;
counter < paramCellCount;
counter++){
[result addObject: [[NSString alloc] initWithFormat:@"Section %lu
Cell %lu",
(unsigned long)paramIndex,
(unsigned long)counter+1]];
}
return result;
}
β (NSMutableArray *) arrayOfSections{
if (_arrayOfSections == nil){
NSMutableArray *section1 = [self newSectionWithIndex:1
cellCount:3];
NSMutableArray *section2 = [self newSectionWithIndex:2
cellCount:3];
NSMutableArray *section3 = [self newSectionWithIndex:3
cellCount:3];
_arrayOfSections = [[NSMutableArray alloc] initWithArray:@[
section1,
section2,
section3
]
];
}
return _arrayOfSections;
}
ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΡΠ΅ΠΌ ΡΠ°Π±Π»ΠΈΡΠ½ΡΠΉ Π²ΠΈΠ΄ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π² ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π΅ UITableViewDataSource, ΡΡΠΎΠ±Ρ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ°Π±Π»ΠΈΡΠ½ΡΠΉ Π²ΠΈΠ΄ Π΄Π°Π½Π½ΡΠΌΠΈ:
β (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView{
return self.arrayOfSections.count;
}
β (NSInteger) tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section{
NSMutableArray *sectionArray = self.arrayOfSections[section];
return sectionArray.count;
}
β (UITableViewCell *) tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = nil;
cell = [tableView dequeueReusableCellWithIdentifier: CellIdentifier
forIndexPath: indexPath];
NSMutableArray *sectionArray = self.arrayOfSections[indexPath.section];
cell.textLabel.text = sectionArray[indexPath.row];
return cell;
}
β (void)viewDidLoad{
[super viewDidLoad];
self.myTableView =
[[UITableView alloc] initWithFrame: self.view.bounds
style: UITableViewStyleGrouped];
[self.myTableView registerClass: [UITableViewCell class]
forCellReuseIdentifier: CellIdentifier];
self.myTableView.autoresizingMask =
UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleHeight;
self.myTableView.delegate = self;
self.myTableView.dataSource = self;
[self.view addSubview: self.myTableView];
}
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ. Π‘Π½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π·Π΄Π΅Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ Π½Π° Π½ΠΎΠ²ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ. ΠΠ°ΠΏΠΈΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ ΡΠ°Π·Π΄Π΅Π» 1 Π½Π° ΠΌΠ΅ΡΡΠΎ ΡΠ°Π·Π΄Π΅Π»Π° 3: