1
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    if ([BGSearchParameter defaultSearchParameters].fetchedResults.count==0)
    {
        PO(@([self.tableView numberOfRowsInSection:0]));
        PO(@([self tableView:nil numberOfRowsInSection:0]));
        PO(@(indexPath.row));
        while (false);
    }

这是结果

self.tableView numberOfRowsInSection:0]): 20
 @([self tableView:nil numberOfRowsInSection:0]): 0

现在,我不知道是谁叫的cellForRowAtIndexPath

这是屏幕截图

在此处输入图像描述

调试窗口显示主线程以某种方式调用cellForRowAtIndexPath.

UITableViewCell我通常通过返回一些从未显示的随机数来解决这个问题。但是,我认为这是一个错误。

cellForRowAtIndexPath除了 tableReload 之外还有哪些函数可以调用以及为什么它不调用

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

第一的?

即使只有 0 行,我的 tableView 似乎仍然认为有 20 行。

4

2 回答 2

1

您可以使用该方法的参数“tableView”来检查“UITableView”的正确实例是否被调用。例如,在委托方法“- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section”中添加以下代码:

if(tableView== youwanttocheckTableView) {
//do what you want to do
}

您还可以在此类中检查哪个 TableView 实例已将其委托设置为“self”。

于 2013-10-29T08:38:08.167 回答
1

问题似乎是您的 tableview 不令人耳目一新。请在您的代码中包含这一行,以便它每次都会引用:-

[yourTableView reloadData];
于 2013-10-29T08:24:34.323 回答