【問題】
(UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 方法中的section貌似從1開始而不是從0
【思路】
程序中雖然設置了 self.tableView.sectionHeaderHeight =20
還還是是不行 viewForHeaderInSection 中的section始終還是從1開始。
於是我發現, 如果你使用方法:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 40;
}
就從0開始啦。
尼瑪真吭 IOS7的新特性,其實 self.tableView.sectionHeaderHeight =20 這種效率遠遠比方法要快。如果不存在特殊需求大家還是直接設置屬性來吧。
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 40; } - (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 40)]; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, 10, tableView.frame.size.width, 20)]; label.font = [UIFont systemFontOfSize:16.0f]; //UILabel的字體大小 label.numberOfLines = 0; //必須定義這個屬性,否則UILabel不會換行 label.textColor = CR_RGBCOLOR(170, 170, 170); label.textAlignment = NSTextAlignmentLeft; //文本對齊方式 [label setBackgroundColor:[UIColor clearColor]]; label.text = self.sectionTitles[section]; [headerView setBackgroundColor:[UIColor clearColor]]; [headerView addSubview:label]; return headerView; } - (UIView *) tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { return [[CRCustomFooter alloc] init]; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSUInteger section = indexPath.section; NSUInteger row = indexPath.row; if(section == 1){ if (row == 0) { [self recommendToFriends]; [tableView deselectRowAtIndexPath:indexPath animated:YES]; }else if(row == 1){ [self sendFeedback]; [tableView deselectRowAtIndexPath:indexPath animated:YES]; }else if(row == 2){ [self rateApp]; [tableView deselectRowAtIndexPath:indexPath animated:YES]; }else{ } } }