- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
如何在页面 Controller 中动态添加/删除对象?在应用程序生命周期内,所有示例都在 awakeFromNib 方法期间设置了 arrangedObjects 属性一次。
在我的应用程序中,我使用 NSPageController 在主窗口中显示了 NSObjects 的 NSMutableArray。对于每个 NSObject,我在委托(delegate)的 - (NSViewController *) pageController:(NSPageController *) pageController 中创建相应的 ViewController
方法。
viewControllerForIdentifier:(NSString *) 标识符
在程序执行期间,对象将异步添加到可变数组或从可变数组中删除。在每次事件中,我都将页面 Controller 的 arrangedObjects 设置为可变数组以说明更改 - 显示新对象并停止显示已删除的对象。
添加对象后一切正常。但是当删除对象时,关联的 View / View Controller 保留在内存中。
我怎样才能“重置”页面 Controller ,以便它忘记有关已删除对象的所有信息?
看起来页面 Controller 保留了已删除对象的 View Controller 的引用(快照)。当添加其他对象时,它们的 View 会变得困惑。
最佳答案
按照此处所述尝试在历史模式下使用 NSPageController
How do you implement NSPageController to navigate through a webView's history
这里
https://developer.apple.com/library/mac/documentation/AppKit/Reference/NSPageController_Class/
在这种情况下你不需要实现
pageController:identifierForObject:
和
pageController:viewControllerForIdentifier
无需设置
arrangedObjects
但是你需要打电话
navigateForwardToObject
每次你想打开一个新页面,这个方法让NSPageController清除转发历史并打开一个新页面。还可以使用此方法中的新页面向您的 pageController.view 添加新 View 。我也在
中进行了 View 替换didTransitionToObject
关于objective-c - 如何从 NSPageController arrangedObjects 中删除对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26805209/
我是一名优秀的程序员,十分优秀!