【问题标题】:UITableView reload cells' viewUITableView 重新加载单元格的视图
【发布时间】:2011-07-27 16:27:44
【问题描述】:

如何重新加载整个 tableview?在-tableView:cellForRowAtIndexPath: 中,我将在线数据与用户设备上的数据进行比较,如果不一样,则显示一个下载内容的按钮。在连接到此按钮的操作后,我想刷新整个 tableview 以再次将在线内容与本地内容进行比较。

reloadData 实际上会更新值,但不会删除这些按钮。我想更改单元格的显示方式..

换句话说,我希望这个条件(-tableView:cellForRowAtIndexPath:)起作用,但它不起作用:

    if (![[NSFileManager defaultManager] fileExistsAtPath:someDir isDirectory:nil]) {   
        UIButton *bt = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        (...)
        [cell addSubview:bt];
    }

现在要更新表格,我必须弹出视图控制器并再次推送它。我想用导航栏上的按钮来做。

提前致谢。

【问题讨论】:

  • 如果你使用的是自定义的 UITableViewCell,请确保你实现了准备重用单元格的方法,这是 dequeueReusableCellWithIdentifier 的问题。带有按钮的单元格需要自己的标识符。

标签: iphone uitableview reload


【解决方案1】:

那是因为您使用dequeueReusableCellWithIdentifier 缓存单元格。检查文档。您应该缓存 2 种类型的单元格,带按钮和不带按钮。

【讨论】:

  • 所以简而言之,我应该选择应该显示两种类型的单元格中的哪一种而不是添加按钮?
  • 是的,根据您想要的单元格将不同的标识符传递给 dequeueReusableCellWithIdentifier。并创建一个带按钮和一个不带按钮。
【解决方案2】:
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier: @"your-id"];
if (cell)
{
     //Check if it should contain a button. If it shouldn't remove it
}
else
     //Create a fresh new cell

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    相关资源
    最近更新 更多