如果表为空,cellForRowAtIndexPath应该返回什么?

时间:2011-06-19 08:20:33

标签: iphone objective-c ios xcode uitableview

 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

我认为如果表是空的,即

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [[BNUtilitiesQuick getBizs] count];
}

始终返回0

我希望不应该调用-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

这很重要。我正在制作一个搜索事物的程序,有时在搜索之后,没有返回结果。

然而,无论如何,我被称为例外。我该怎么办?

5 个答案:

答案 0 :(得分:4)

在表视图实现它没有行之前可以调用

-tableview:cellForRowAtIndexPath:,因此不应该调用它。

因此,您的实现需要检查传入的行的值是否超出数组的范围。如果是,则需要返回一个空单元格(文档说明返回nil会引发异常)。

答案 1 :(得分:1)

tableView:cellForRowAtIndexPath:方法返回tableView:numberOfRowsInSection:时,根本无法调用0。很可能是错误地返回了计数。

答案 2 :(得分:1)

首先在[[BNUtilitiesQuick getBizs] count]; 中打印NSLog,然后查看它是否真的返回0.

  

如果它显示为0,并且cellForRowAtIndexPath:仍然被调用,我怀疑那里有一些幽灵。 : - )

答案 3 :(得分:1)

通常你会在cellForRow中有一个巨大的switch语句......这意味着你必须在默认情况下返回一个值。我通常会在那里归零。

编译器要求这不显示警告,但绝不应该实际调用它。此方法仅针对可能由于您在numberOfSections和numberOdRowsInSection方法中重新设置的行索引而调用。

答案 4 :(得分:0)

如果将1作为计数返回(例如10),那么一个单元格将显示带有“无结果”的灰色文本?

(打开您的通讯录应用并搜索某些内容..它将有大约10行,9位为空,1位显示“无结果”)