【问题标题】:Not update visual cells in a tableviewcell不更新 tableviewcell 中的可视单元格
【发布时间】:2012-09-30 18:59:12
【问题描述】:

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

【问题讨论】:

  • 你检查willDisplayCell是否被调用?
  • 它被调用了,但是当我从子视图返回时它不是,直到我向下或向上滚动,然后它是并且颜色单元格被更新。

标签: iphone ios uitableview


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多