如何动态添加/删除页面控制器中的对象?在应用程序生命周期中,所有示例都在awakeFromNib方法期间设置了arrangeObject属性。
在我的应用程序中,我有NSObjects的NSMutableArray,我使用NSPageController在主窗口中显示。对于每个NSObject,我在委托的 - (NSViewController *) pageController:(NSPageController *) pageController
viewControllerForIdentifier:(NSString *) identifier
方法中创建相应的ViewController。
在程序执行期间,对象将与可变数组异步添加/删除。 在每个事件中,我将页面控制器的arrangeObjects设置为可变数组以考虑更改 - 显示新对象并停止显示已删除的对象。
添加对象时,一切正常。但是当删除对象时,关联的视图/视图控制器仍保留在内存中。
如何“重置”页面控制器以便忘记删除对象的所有内容?
看起来页面控制器保留已删除对象的视图控制器的引用(快照)。当添加另一个对象时,他们的视图会混乱。
答案 0 :(得分:0)
尝试在历史模式下使用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添加新视图。 我也在
中进行了视图替换didTransitionToObject