Showing posts with label UITableViewDataSource tableView titleForHeaderInSection example. Show all posts
Showing posts with label UITableViewDataSource tableView titleForHeaderInSection example. Show all posts

Saturday, June 8, 2013

UITableViewDataSource tableView titleForHeaderInSection example in Objective C (iOS).


UITableViewDataSource tableView titleForHeaderInSection

Asks the data source for the title of the header of the specified section of the table view.

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

Parameters of [UITableViewDataSource tableView titleForHeaderInSection]
tableView
The table-view object asking for the title.
section
An index number identifying a section of tableView .

Return Value
A string to use as the title of the section header. If you return nil , the section will have no title.

Discussion of [UITableViewDataSource tableView titleForHeaderInSection]
The table view uses a fixed font style for section header titles. If you want a different font style, return a custom view (for example, a UILabel object) in the delegate method tableView:viewForHeaderInSection: instead.

UITableViewDataSource tableView titleForHeaderInSection example.
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {

//TEMP SECTION STRING HOLDER:
NSString *sectionHeader = nil;

//SET TITLE FOR EACH SECTION:
if(section == 0) {
    sectionHeader = @"Section Header No. 1";
}

if(section == 1) {
    sectionHeader = @"Section Header No. 2";
}

if(section == 2) {
    sectionHeader = @"Section Header No. 3";
}

//RETURN THE SECTION HEADER FOR EACH SECTION:
return sectionHeader;

}

Example of [UITableViewDataSource tableView titleForHeaderInSection].
- (NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
 {
     /* If datasource methdod is implemented, get´s the name of sections*/
     SEL nameForSection = @selector(nameForSection:);
    if ( (self.dataSource) && [self.dataSource respondsToSelector:nameForSection] )
    {
       NSString *titleSection = [self.dataSource nameForSection:section];
       return titleSection;
   }

return nil;

UITableViewDataSource tableView titleForHeaderInSection example.
Store the titles of sections in an array as,

NSArray *sectionTitles = [NSArray arrayWithObjects:@"Frozen", @"Fruit", @"Salads", @"Vegetables", nil];
And modify your titleForHeaderInSection method as,

- (NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
NSString *result = [sectionTitles objectAtIndex:section];
//....
return result;
}
Modify didSelectRowAtIndexPath as,

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//...
NSLog(@"Header title: %@",  [sectionTitles objectAtIndex:indexPath.section]);
//...
}
Another option is to use the below method in didSelectRowAtIndexPath

NSLog(@"Header title: %@",  [self tableView:tableView titleForHeaderInSection:indexPath.section]);

End of UITableViewDataSource tableView titleForHeaderInSection example article.