i have changed the backgroundColor/backgroundImage of my tableviews sections.
I am using plain tableView.
No worries, get worked without problems with this code:
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
UIView *sectionView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 728, 40)] autorelease];
sectionView.backgroundColor = [UIColor greenColor];
//For using an image use this:
//sectionView.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"whiteBackground.png"]];
return sectionView;
}
Problem now is, the section title is gone.
I am setting the title of the section with this code:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
if ([tableView isEqual:self.searchDisplayController.searchResultsTableView]){
return @"";
} else {
id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
return [sectionInfo name];
}
}
i am getting the section titles if i do not use
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
Need your help.
Thanks a lot.
EDIT 1:
Thanks to Mutix:
in my case, the answer would be:
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
UIView *sectionView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 728, 20)] autorelease];
sectionView.backgroundColor = [UIColor greenColor];
//sectionView.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"whiteBackground.png"]];
//Add label to view
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 728, 20)];
titleLabel.backgroundColor = [UIColor clearColor];
//section Title
if ([tableView isEqual:self.searchDisplayController.searchResultsTableView]){
titleLabel.text = @"";
} else {
id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
titleLabel.text = [sectionInfo name];
}
[sectionView addSubview:titleLabel];
[titleLabel release];
return sectionView;
}
The
viewForHeaderInSection
overrides thetitleForHeaderInSection
method.To add a title to your header when using
viewForHeaderInSection
you will need to add a label to the section header view like so:Implement method below from UITableViewDelegate, and needed ui view.
If you need change footer use similar code in ...viewForFooterInSection.. method
Want to draw you own font, use similar customization:
Just add
[titleLabel setBackgroundColor:[UIColor clearColor]];
because in my case the label overlapped the green color.
We have a better solution for this from iOS6 onwards:
There is a delegate method
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
You can use this method like this
~Best Solution iPhone 3.5 and 4 screen~
Set the back color or background image from this code. Here you don't have to calculate for section height, just set in xib.