UITableView的默认标题视图

时间:2009-11-18 19:11:48

标签: iphone objective-c uitableview

我有一个UITableView,它被设计为一个分组的tableView。在某些情况下,我需要为标题创建自定义视图,在其他情况下我需要默认视图。

创建自定义标头很容易 - 只需使用委托:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

但是,如果我想要默认的标题视图,我该从该委托返回什么?

我已经尝试返回nil,这只有在表视图设置为Plain时才能正常工作。如果表格视图被设置为Grouped,那么当我返回nil时,默认标题会消失。

如果考虑到我有时需要自定义标题视图,如何获取默认标题?

修改

我想我发现了问题。在tableView:heightForHeaderInSection中:我执行以下操作:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if ([myArray count] == 0) return 80;
    else return [tableView sectionHeaderHeight];
}

似乎[tableView sectionHeaderHeight]为我的标题返回了不正确的高度。它将它设置为10,但它应该是大约30。

3 个答案:

答案 0 :(得分:10)

上述问题的正确答案是:

返回默认视图return nil

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
   return nil;
}

返回默认标题高度返回-1

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
   return -1;
}

这对我有用!

答案 1 :(得分:0)

在编辑中回答了我自己的问题。我需要为节标题返回一个硬编码的高度。

答案 2 :(得分:0)

实际上,如果您需要默认标头,则应使用以下delegate method

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    return @"my title text";
}