0

我正在使用 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];
}
}
4

1 回答 1

0

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

我通常把它分解成一个单独的方法,比如updateCells.

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

于 2012-10-01T06:08:53.910 回答