gpt4 book ai didi

iphone - 在 DetailViewController 更改后更新 UITableViewController 中的单元格

转载 作者:行者123 更新时间:2023-11-29 11:23:58 26 4
gpt4 key购买 nike

我有一个相当简单的设置:RootViewController(它是一个 UITableViewController)。其中的每个单元格显示不同人的一些统计数据。您可以点击这些单元格中的任何一个来插入 DetailViewController (UIViewController),并修改统计信息(存储在模型对象中)。用户完成修改该人的统计信息后,他们单击返回按钮,导致调用 popViewControllerAnimated。

我的问题是:在 RootViewController 中了解该玩家的统计数据已更改并相应地更新单元格的最佳方法是什么?我是否必须在 RootViewController 中记录哪个单元格被点击,然后在 DetailViewController 完成后调用适当的 setNeedsDisplay?如果是这样,我应该用哪种方法来做到这一点? viewWillAppear?

或者有更好的方法吗?这似乎是一项相当常见的任务,而且我遗漏了一些明显的东西。

最佳答案

这取决于您的模型的设计方式以及您是否使用 Core Data。

基本原则是观察可能在详细 View 中更改的模型对象的属性。当细节 Controller 中发生某些变化时,以某种方式将其表格单元格标记为脏。然后,当 TableView 再次可见时,使用 [tableView cellForRowAtIndexPath:] 获取更改的单元格并重新配置单元格。如果单元格不可见,cellForRowAtIndexPath: 方法将轻松返回 nil,这样您就不会花时间更新不需要它的单元格。

如果您正在使用 Core Data(您可能应该使用),NSFetchedResultsController 几乎可以为您完成所有这些工作。它将观察您的模型对象,并将 controller:didChangeObject:atIndexPath:forChangeType:newIndexPath: 消息发送给每个更改的单元格的委托(delegate)。然后,您可以对 TableView 进行适当的更改。

我建议使用 Navigation-based Application 模板创建一个新的 Xcode 项目,并勾选 Use Core Data for Storage 复选框。该模板具有上述模式的良好默认实现。

关于iphone - 在 DetailViewController 更改后更新 UITableViewController 中的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4798349/

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