自定义UITableViewCell为零

时间:2016-01-05 18:05:27

标签: ios objective-c uitableview custom-cell

我正在使用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");
    }

我没有输出任何单元格。请帮忙。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我找到了问题并修复了它。问题是当模态弹出时,它失去了对视图控制器的控制,这就是为什么tableview为空并且没有任何改变的原因。