如何检查UITableViewCells是否为空

时间:2011-10-02 02:44:06

标签: iphone ios

我正在使用indexpathforvisiblerows,它给出了uitableview中可见行的索引路径。如何检查返回的索引路径中的空白单元格?。

`NSArray * visiblePaths = [self.rootViewController.accountTableView indexPathsForVisibleRows];

for(在visiblePaths中的NSIndexPath * indexPath)     {

    UITableViewCell *cell = [self.rootViewController.accountTableView cellForRowAtIndexPath:indexPath];
   // I am getting the issue when i call this function 
        cell.detailTextLabel.text = [self getLastCallDate:indexPath];


}

// getLastCallDate函数

帐户*帐户= [self.fetchedResultsController objectAtIndexPath:indexPath];     NSString * lastCallDate;

if ([[account Calls] count] > 0) {
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"YYYY-MM-dd"];

    Call *call = [[account Calls] objectAtIndex:0];

     lastCallDate = [NSString stringWithFormat:@"Last Call Date: %@",[dateFormatter stringFromDate:call.date]];

    //NSLog(@"detail - %@", cell.detailTextLabel.text);
    [dateFormatter release];
    return lastCallDate;
}
else
    lastCallDate =@"";
return lastCallDate;

` 在搜索获取结果时,控制器的值不会与导致数组绑定执行的可见行一样多

2 个答案:

答案 0 :(得分:2)

在致电getLastCallDate:之前,请检查indexPath.row是否小于数据源中的项目数。像 -

这样的东西
for (NSIndexPath *indexPath in visiblePaths) 
{
     if(indexPath.row < [self.items count]) //items is your data source array
     {
          //your code
     }
}

答案 1 :(得分:1)

我假设您有一个简单的UITableView,没有节标题,只有行。然后是显示tableView.frame.size.height / tableView.rowHeight上显示的行数。减去可见行数。

example for empty rows vs. visible cells

使用上述算法,我得到total rows 16 visible cells 5

现在由你来计算16 - 5