【发布时间】:2013-06-05 19:09:19
【问题描述】:
我在重新加载视图时遇到问题。 OSX不像IOS那么简单。
在 MainMenu.xib 我有一个 NSBox。根据 Hillegrath 的说法,多个视图存储在一个数组中,当按下分段按钮时,视图就会暴露出来。这工作正常。我的挫败感在于,当进行了应该导致它们通过[self someAction]重新显示新值的更改时重新访问这些视图。两个视图中的操作会更改(全局)值,这些值应该传播其他视图中的更改。我正在使用带有 xib(MainMenu)的窗口控制器来保存包含视图的框。我还在代码中为视图命名。
全局 ivar 值会在需要时正确更改,并且日志显示了这一点。但是,当重新访问视图时,不会发生相关操作,即更新视图细节。
似乎发生的是在显示各种视图时未调用 loadView,** **。 awakeFromNib 和 loadView 在第一次显示每个视图时正常运行,但在重新显示时不会正常运行。这意味着视图可能被隐藏但 viewDidUnhide 没有效果。
视图更改代码(来自 SO MVC 答案和 Hillegrath)是
NSViewController *activeVC =
(NSViewController *) self.viewControllers[index];
// [_box setContentView:nil];
[_box setContentView:activeVC.view];
[_box setNeedsDisplay:YES];
从复制的代码可以看出,我也尝试在设置新视图之前将活动内容设置为 nil,但无济于事。
任何想法、建议、通知都无法正常工作,但可能设置不正确。
谢谢
【问题讨论】:
标签: macos nswindowcontroller nsviewcontroller nsbox