我正在使用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];
}
}
答案 0 :(得分:0)
当从另一个视图控制器转换时已加载的单元格变为可见时,不会自动调用willDisplayCell
,您必须将更新代码放入viewWillAppear
。
我通常将其分解为像updateCells
这样的单独方法。
通常,您可以使用[_tableView visibleCells]
或indexPathsForVisibleCells
访问相关的单元格。在您的情况下,您可以保留启动第二个视图控制器的选定单元格的引用并使用它。