-(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
这很重要。我正在制作一个搜索事物的程序,有时在搜索之后,没有返回结果。
然而,无论如何,我被称为例外。我该怎么办?
答案 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位显示“无结果”)