【问题标题】:iPhone tableview does not create cell for added rowiPhone tableview 不会为添加的行创建单元格
【发布时间】:2010-02-12 16:56:15
【问题描述】:

我有一个包含任务的 SQLite 数据库。每个任务都有一个日期,每个日期可以有多个任务。

我的应用仅将一个月的数据加载到可变字典中。每个字典项的键是一个月中日期的字符串 (1, 2, 3 ... 31)。相应的值是该日期的任务数组。因此,对于每个月的每一天,都有一个由 0 个或多个任务组成的数组。

可变字典在根视图控制器中声明。 Interface Builder 中的根 viewcontroller 是 table view 的 dataSource 和 delegate。不知何故,应用程序知道根视图控制器从可变字典中获取其数据。我没有指定这一点,所以我想知道如果有多个字典,或者可能是字典和可变数组会发生什么?尽管如此,这无需额外接线即可工作。当根视图控制器将数据加载到表中时,每个节标题都将日期作为其文本,并在下面的各个单元格中列出所有任务。有些标题没有单元格。

现在,要修改任务,我有一个“入口”视图控制器。在表中选择一个任务会导致条目视图控制器将该任务信息加载到文本字段中,我可以在其中更改标题、日期、详细信息或将其标记为已完成。编辑完成后,entry viewcontroller 卸载,root(table)viewcontroller 重新加载,view 的 tableView 调用 reloadData,变化很明显。

这里的问题是:如果我通过单击导航控制器上的 + 按钮添加一个新任务,它会将我带到同一个条目视图控制器,我在其中设置数据。我通过与编辑现有数据时相同的方法返回到根视图控制器。然而,还没有为新数据创建新单元格!如果我关闭并重新打开应用程序,新数据会正确显示。

由于在应用关闭时数据更新和插入从字典的数组写入数据库,这意味着新项目确实已添加到数组之一。

总结:编辑现有的数组项,当表格重新加载数据时显示新数据。添加一个数组项,在重新加载表格时将其忽略。

怎么了?

【问题讨论】:

    标签: iphone cell add tableview


    【解决方案1】:

    您可以在 UITableViewController 中添加这样的一行:

    [self.tableView reloadData];
    

    这会导致整个 UITableView 被重新加载。但是,我认为首选的方法是:

    [self.tableView insertRowsAtIndexPaths: indexPaths withRowAnimation: YES];
    

    为此,您需要知道行将出现的位置(NSIndexPaths 数组)。

    从“入口”ViewController 中更新 UITableViewController 可能更容易。

    【讨论】:

      猜你喜欢
      • 2011-09-13
      • 2016-03-16
      • 2020-10-20
      • 2020-08-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 2011-06-25
      • 1970-01-01
      相关资源
      最近更新 更多