我有几个NSViewControllers
引用了视图NSWindowController
的字段。我对视图生命周期契约的理解表明,我可以依赖于调用viewDidAppear
时填充的视图窗口。直到今天显而易见的Xcode更新(当我开始使用Xcode时,它似乎更新了一些库,现在版本为9.0(9A235))。现在,当我的NSViewController实例调用viewDidAppear
时,self.view.window
字段实际上是零!代码看起来像这样(添加了一些调试内容):
override func viewDidAppear() {
super.viewDidAppear()
if let w = self.view.window {
if let bmw = w.windowController {
rf = (bmw as! BudgetMunkyWindow).refreshManager;
rf.add(listener:self);
} else {
print("There was not window controller");
}
} else {
print("there is no window");
}
self.categoryTable.reloadData()
categoryTable.expandItem(nil, expandChildren:true)
}
这个合同最近在某个时候发生了变化吗?此时,我无法在构建视图的过程中随时访问窗口控制器,这至少可以说是尴尬。