// // ViewController.m // tableFooterUpdateFail // // Created by Dirk-Willem van Gulik on 16-05-12. // Copyright (c) 2012 Dirk-Willem van Gulik. All rights reserved. // #import "ViewController.h" @interface ViewController () @end @implementation ViewController @synthesize items; - (void)viewDidLoad { [super viewDidLoad]; items = [NSMutableArray arrayWithObjects:@"Ape",@"Nut", @"Denkend aan Holland, zie ik breede rivieren, traag door oneindig, laagland gaan, rijen ondenkbaar ijle populieren als hooge pluimen aan den einder staan.", @"Mies",@"Fish", @"Denkend aan Holland, zie ik breede rivieren, traag door oneindig, laagland gaan, rijen ondenkbaar ijle populieren als hooge pluimen aan den.", @"Denkend aan Holland, zie ik breede rivieren, traag door oneindig, laagland gaan.", @"Denkend aan Holland, zie ik breede rivieren, traag door oneindig, laagland gaan, rijen ondenkbaar ijle populieren als hooge pluimen aan den einder staan. Denkend aan Holland, zie ik breede rivieren, traag door oneindig, laagland gaan, rijen ondenkbaar ijle populieren als hooge pluimen aan den einder staan.", nil]; UIBarButtonItem * editButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(editList:)]; [self.navigationItem setRightBarButtonItems:[NSArray arrayWithObjects:editButton, nil]]; } -(IBAction)editList:(id)sender { BOOL isEditing = ![self isEditing]; [self setEditing:isEditing animated:YES]; [[[self.navigationItem rightBarButtonItems] lastObject] setTintColor:isEditing ? [UIColor redColor] : nil]; } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [items count]; } -(float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { NSString *text = [items objectAtIndex:[indexPath row]]; CGSize constraint = CGSizeMake(self.view.bounds.size.width-24.f, CGFLOAT_MAX); UITableViewCell * cell = [self tableView:tableView cellForRowAtIndexPath:indexPath]; UIFont * font = cell.textLabel.font; if (font.pointSize == 0) font = [UIFont systemFontOfSize:20]; CGSize size = [text sizeWithFont:font constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap]; CGFloat height = MAX(size.height + 12.f, tableView.rowHeight); return height; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (!cell) cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; cell.textLabel.text = [items objectAtIndex:indexPath.row]; cell.textLabel.numberOfLines = 0; // whatever is needed to make this fit. cell.textLabel.lineBreakMode = UILineBreakModeWordWrap; return cell; } - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { return YES; } - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { [items removeObjectAtIndex:indexPath.row]; [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; // We'd hope that this would update the count. // [tableView reloadSectionIndexTitles]; // We really would like to avoid this: [tableView reloadData]; } } #pragma mark - Table view delegate - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { } - (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section { return [NSString stringWithFormat:@"We have %d item%@ above", [items count], [items count] == 1 ? @"" : @"s"]; } @end