I have created one button with images for different states in UITableView header
-(UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
self.filterButton = [UIButton buttonWithType:UIButtonTypeCustom];
[self.filterButton setBackgroundImage:[UIImage imageNamed:@"g29_fctn_filter_default"] forState:UIControlStateNormal];
[self.filterButton setBackgroundImage:[UIImage imageNamed:@"g31_fctn_filter_applied"] forState:UIControlStateSelected];
[self.filterButton setBackgroundImage:[UIImage imageNamed:@"g30_fctn_filter_active"] forState:UIControlStateHighlighted];
self.filterButton.frame = CGRectMake((self.myTableView.frame.size.width / 2) - 60, 10, 44, 32);
[self.filterButton addTarget:self action:@selector(filterButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
//imageView.contentMode = UIViewContentModeScaleAspectFit;
[view addSubview:self.filterButton];
return view;
}
When i set button state to selected programmatically , i don't see UIButton image changes , it still show image which is set for forState:UIControlStateNormal
-(void) filterButtonPressed:(id)sender
{
[self.filterButton setSelected:YES];
}