在我的许多 中UIViewControllers
,我会根据我的数据状态更新某些控件。例如,我可能有一个编辑按钮UITableViewController
,只有在有一个或多个项目时才应该启用。或者也许我想限制可以添加的项目数量,否则禁用“添加”按钮。
每次我添加或删除一个项目(或采取任何其他可以添加/删除项目的操作)时,我都必须记住更新任何可能需要启用/禁用的控件。这在大多数情况下是微不足道的,但感觉不舒服 - 有很多重复,我必须记住在添加updateControlEnabled
可能影响数据的新功能时添加调用(或其他)。
然后我注意到 NSManagedObjectContextObjectsDidChangeNotification。阅读文档,我似乎可以在托管对象上下文发生变化时收到通知。这似乎很理想,但我有几个问题:
这是对 NSManagedObjectContextObjectsDidChangeNotification 的适当使用吗?
如果控制器订阅这些并解析每一个以查看它是否需要更新 UI,我是否应该预期任何性能影响?我将检查 userInfo 的每一项更改,而不是只检查那些我知道我会关心的更改。
- 我应该在哪里订阅通知?我
UIViewController
有一个对上下文的引用,这有帮助,但我不知道在哪里订阅(loadView?viewDidLoad?init?),这样视图控制器将始终只有一个订阅。 - 视图控制器在屏幕外时将继续接收和处理通知 - 当数据模型受到其他地方的影响时启用和禁用控件。这个可以吗?
我想我主要是想知道是否还有其他人使用这种方法,如果是,他们的经验是什么。