UITableView – 直接设置tableHeaderView属性与实现-viewForHeaderInSection方法

直接设置tableHeaderView / tableFooterView属性有什么区别:

UIView *headerView = [[UIView alloc] init...]; tableView.tableHeaderView = headerView; [headerView release]; 

并实现viewForHeaderInSection / viewForFooterInSection方法?:

 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UIView *headerView = [[[HeaderView alloc] init...] autorelease]; return headerView; } 

第一个是表的标题,第二个将为您提供向表中的每个部分添加标题的机会。

绿色表示tableViewHeader,蓝色表示sectionHeader。

在此处输入图像描述

 -(void) viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; if (headerView == nil) { [[NSBundle mainBundle] loadNibNamed:@"DetailContactHeader" owner:self options:nil]; headerView.nameLabel.text = [NSString stringWithFormat:@"%@ %@", [contact objectForKey:@"name"], [contact objectForKey:@"familyname"]]; if ([[contact allKeys] containsObject:@"pictureurl"]) { headerView.avatarView.image = [UIImage imageNamed:[contact objectForKey:@"pictureurl"]]; } } [self.tableView setTableHeaderView: headerView]; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 2; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // Return the number of rows in the section. return [[contact allKeys] count]-3; } // Customize the appearance of table view cells. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier] autorelease]; } id key = [self.possibleFields objectAtIndex:indexPath.row]; cell.textLabel.text = [NSString stringWithFormat:@"%@", key]; cell.detailTextLabel.text = [NSString stringWithFormat:@"%@", [contact objectForKey:key]]; return cell; } -(CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 44.0; } -(UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UILabel *l = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 44)] autorelease]; l.backgroundColor = [UIColor clearColor]; l.text= @"I am a Section Header"; return l; } 

您可以在此处找到此应用程序的代码: MyContacts

Interesting Posts