我尝试构建一个在 Xcode 6 中使用 Storyboard和 Swift 的 Cocoa 应用程序。但是,当我尝试从 NSViewController
中更改窗口的标题时,以下代码不会工作。
self.title = "changed label"
当我在 viewDidLoad()
函数中编写上述代码时,生成的应用程序的标题仍然是 window
。
此外,以下代码会导致错误,因为 View Controller 没有 window
这样的属性。
self.window.title = "changed label"
那么如何在基于 Storyboard构建的 Cocoa 应用程序中以编程方式更改窗口的标题?
最佳答案
您的代码有两个问题:
viewDidLoad
在将 View 添加到窗口之前调用NSViewController
没有窗口属性
要修复第一个问题,您可以覆盖 viewDidAppear()
。此方法在 View 完全转换到屏幕上后被调用。此时它已经添加到窗口中。
要获得对窗口标题的引用,您可以通过 View 访问 View Controller 的窗口:self.view.window.title
只需将以下内容添加到您的 View Controller 子类中,窗口标题就会发生变化:
override func viewDidAppear() {
super.viewDidAppear()
self.view.window?.title = "changed label"
}
关于xcode - Cocoa:如何在 Swift 的 View Controller 中设置窗口标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24235815/