UITableView检查是否显示索引

时间:2010-11-26 18:09:36

标签: uitableview indexing

为了获得单元格的必要高度,我实现了像

这样的函数
+(CGFloat)rowHeightForTableView:(UITableView*)tableView andObject:(NSObject*)theObject {...}

在细胞内。

由于tableView是参数之一,我可以检查它是普通的还是分组的样式表,并在计算中包含结果宽度。但是我应该如何检查是否显示索引?

1 个答案:

答案 0 :(得分:2)

您可以检查表视图的数据源是否响应sectionIndexTitlesForTableView:选择器(数据源必须为索引表视图实现):

if ([tableView.dataSource 
       respondsToSelector:@selector(sectionIndexTitlesForTableView:)])
{
    NSArray *result = 
             [tableView.dataSource sectionIndexTitlesForTableView:tableView];
    if (result != nil)
        NSLog(@"tableView is currently indexed");
    else
        NSLog(@"tableView is not currently indexed");
}
else
    NSLog(@"tableView does not implement indexing");

如果数据源响应该选择器,实际调用它并检查结果允许表视图当前从该方法返回nil的可能性,因为它不希望因任何原因或数据源显示索引正在处理多个表视图(其中一些是索引的,一些不是)。