UITableView - 直接设置 tableHeaderView 属性与实现 -viewForHeaderInSection 方法
Posted
技术标签:
【中文标题】UITableView - 直接设置 tableHeaderView 属性与实现 -viewForHeaderInSection 方法【英文标题】:UITableView - Directly setting tableHeaderView property vs. Implementing -viewForHeaderInSection method 【发布时间】:2011-06-22 21:50:04 【问题描述】:直接设置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;
【问题讨论】:
【参考方案1】:第一个是表格的标题,第二个可以让您有机会为表格的每个部分添加标题。
绿色是tableViewHeader,蓝色是sectionHeaders。
-(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
【讨论】:
在闲逛之后我看到你回答了我的问题,但没有回答,哈哈。再次感谢! @vikingosegundo以上是关于UITableView - 直接设置 tableHeaderView 属性与实现 -viewForHeaderInSection 方法的主要内容,如果未能解决你的问题,请参考以下文章