自定义 UITableViewCell 为零

Custom UITableViewCell is nil

我正在使用 xib 加载 UITableViewController 中的单元格。通过点击弹出模态的单元格上有一个按钮,当我们点击该模态上的某些东西时,我想更改单元格中的图像。但是即使我传递了 indexPath,我也无法获取单元格。 我使用了以下代码:

    NSIndexPath* indexPath1 = [NSIndexPath indexPathForRow:sender inSection:0];
    [self.tableView2 reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath1, nil] withRowAnimation:UITableViewRowAnimationNone];

我在cellForRowAtIndexPath中写了代码如下:

    if([[feedbackDictionary objectForKey:[NSString stringWithFormat:@"Key%li",indexPath.row]] isEqualToString:[NSString stringWithFormat:@"%li",indexPath.row]])

            {
                NSLog(@"Yay! Feedback");
                cell.checkmark.image=[UIImage imageNamed:@"tick"];
            }
            else
            {
                NSLog(@"Oops! No feedback");
                cell.checkmark.image=[UIImage imageNamed:@"orangetick"];
            }

我假设当 reloadrows 将 运行 时,它将通过调用 cellForRowAtIndexPath 重新加载该特定单元格。但这无济于事。图片完全没有变化。

其次,我尝试使用以下方法获取单元格

    NSIndexPath *ip=[NSIndexPath indexPathForItem:button.tag inSection:0];
    ExpandingCell *cell=(ExpandingCell*) [_tableView2 cellForRowAtIndexPath:ip];
    if(cell==nil)
    {
     NSLog(@"No cell");
    }

我没有得到任何单元格作为输出。请帮忙。

首先,要对其进行调试,请尝试调用 [self.tableView2 reloadData]。如果您的图像已更改,则意味着您为 reloadRowsAtIndexPaths 方法调用了错误的 indexPath。 另外 button.tag 可能 return 错误的标签,因为单元格在 UITableView 中是可重复使用的,并且它可以是以前已经使用过的单元格。

我已经找到问题并解决了。问题是当模式弹出时,它失去了对视图控制器的控制,这就是为什么 tableview 为 null 并且没有任何更改。