不更新tableviewcell中的可视单元格

时间:2012-09-30 18:59:13

标签: iphone ios uitableview

我正在使用tableviewcell编写应用程序。当我触摸一个单元格驱动我到另一个视图控制器,我激活一个开关并将此状态保存在plist文件中。返回tableviewcell我从plist文件中读取信息并更新触摸和激活的单元格的背景颜色。问题是当我通过导航按钮返回tableview单元格时,如果单元格可见,则不会显示背景颜色。仅当我向下或向上滚动时,颜色单元格才会更新。我试过reloadData方法,但没有成功。在IOS API上,将使用reloadData方法更新可见单元格。提前谢谢。

- (void)viewWillAppear:(BOOL)animated {
controladorRegistre = [[ControladorRegistres alloc]initRegistreAmbCategoria];
[self.tableCategories reloadData];
[super viewWillAppear:animated];

}

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell       *)cell
            forRowAtIndexPath:(NSIndexPath *)indexPath
{
//Pinta la celda si esta activada
registre = [controladorRegistre getRegistreCategoria:cell.textLabel.text];
BOOL estaActivat = [[registre objectForKey:@"estaActivat"] boolValue];
if (estaActivat) {
    [cell setBackgroundColor:[UIColor redColor]];
}else{
    cell.backgroundColor = [UIColor whiteColor];
}
}

1 个答案:

答案 0 :(得分:0)

当从另一个视图控制器转换时已加载的单元格变为可见时,不会自动调用willDisplayCell,您必须将更新代码放入viewWillAppear

我通常将其分解为像updateCells这样的单独方法。

通常,您可以使用[_tableView visibleCells]indexPathsForVisibleCells访问相关的单元格。在您的情况下,您可以保留启动第二个视图控制器的选定单元格的引用并使用它。