我有几个NSViewControllers
引用视图的NSWindowController
的字段。我对视图生命周期契约的理解表明,我可以依赖于在调用viewDidAppear
时填充的视图窗口。直到今天明显的Xcode更新(当我开始Xcode时,它似乎更新了一些库,现在是9.0版本(9A 235))。现在,当在我的NSViewController示例上调用viewDidAppear
时,self.view.window
字段实际上是nil!代码看起来像这样(添加了一些调试内容):
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)
}
这份合同在最近的某个时候发生了变化吗?此时,在视图构造过程中的任何时候都不能访问窗口控制器,这至少可以说是很尴尬的。
1条答案
按热度按时间g0czyy6m1#
这里是一个工作从我的应用程序,包括一些调试代码。从viewDidAppear调用func后,需要1-2次迭代才能跳出循环
}