gpt4 book ai didi

iphone - 加载 TableView 后,将 UITableView 中的单元格排序为部分

转载 作者:行者123 更新时间:2023-11-29 04:12:55 24 4
gpt4 key购买 nike

对,所以我的 UITableView 加载并按字母顺序放置所有单元格。然后从服务器下载信息并完成计算,一旦一切完成,TableView 就会重新加载。目前,这是一个非常简单的过程,因为一旦从服务器下载信息,单元格甚至不会移动,它们会按字母顺序排列。除了填写一半的信息并根据计算进行一些小的更改之外,实际上什么都没有发生。我想知道是否有一种简单的方法可以根据下载完成后完成的计算将单元格放入部分?我确实有一个想法,创建 4 个数组(永远只有 4 个部分),一旦 isLoading 设置为 no,将 TableView 的数据源更改为具有部分,但是,这听起来有点……不确定。我知道这是一个理论问题,而不是编码问题,但在我搞乱我的代码之前,这肯定是一种愚蠢低效的做事方式,是否有一种简单的方法将 UITableViewCells“分配”给部分?

我的做法的主要问题是,如果用户删除单元格,则删除核心数据中的相应条目将有点棘手并且容易出错。这让我产生了另一个想法。如果我向核心数据实体添加一个额外的属性会怎样?一旦计算完成,该属性将被分配并保存。这样做的问题是现有的数据库都无法工作。必须有一种巧妙的方法来实现这一目标。

感谢您的帮助。如果您需要我发布任何代码,请直接说出来,我会的。

最佳答案

如果你实现与节相关的数据源方法,应该没问题。

例如:

  • TableView 中的节数
  • sectionIndexTitlesForTableView。

任何时候重新加载表数据(例如,[self.tableView reloadData]),这些方法都会被调用,并且数据将被放置到它们的部分中。

请记住,单元格只是模型的视觉表示,在本例中是您获取的数据。单元格未分配给部分;它们只是根据您为模型指定的方式创建的(通过 TableView 数据源和委托(delegate)方法)。

关于使用 Core Data 时删除条目,我建议查看 NSFetchedResultsController 。后者将监视表数据的任何更改,并在进行更新时向其委托(delegate)(即 TableView Controller )发送消息。

例如,删除操作将像平常一样从调用 TableView 委托(delegate)开始(即通过 tableView:didEndEditingRowAtIndexPath)。在后者中,您可以从核心数据中删除该条目(例如,[self.myDatabase.managementObjectContext deleteObject:entity])。假设您使用相同的托管对象上下文启动了 NSFetchedResultsController,删除操作将自动反射(reflect)给您的用户。

但是,如果您使用的是远程数据库,则还必须执行保存(无论您已经实现了该操作)以确保数据库也得到更新。

另请注意,如果您使用 NSFetchedResultsController,则无需实现部分数据源方法,因为 NSFetchedResultsController 可以为您处理该方法。只需在数据模型中定义键路径,该路径将在初始化 NSFetchedResultsController 时返回部分名称。

关于iphone - 加载 TableView 后,将 UITableView 中的单元格排序为部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14142066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com