Table View headers or footers can’t be tapped. Sometimes however that’s exactly what we want to do.
In this example we’ll add a new UIView to out table view and add it to the table’s footer. Inside this view we’ll have a custom button which we’ll create with an image. We’ll also have a method that is called when the user presses the button:
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
// height of the footer
// this needs to be set, otherwise the height is zero and no footer will show
return 80;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
// creates a custom view inside the footer
UIView *footerView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 80)];
// create a button with image and add it to the view
UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 320, 78)];
[button setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(footerTapped) forControlEvents:UIControlEventTouchUpInside];
[footerView addSubview:button];
return footerView;
}
- (void)footerTapped {
NSLog(@"You've tapped the footer!");
}
The result is a row at the bottom of the table view which stays in place even if the table is scrolled – ideal of anything users should see at all times.
You can do the same for table view headers, just add the code to the “headerInSeaction” variants of the methods above.
