我试图构建一个在Xcode 6中使用storyboard和Swift的Cocoa应用程序。但是,当我尝试在NSViewController
内改变窗口的标题时,下面的代码并没有在'工作。
self.title = "changed label"
当我在viewDidLoad()
函数中编写上述代码时,生成的应用程序标题仍为window
。
此外,以下代码会导致错误,因为View Controller没有window
这样的属性。
self.window.title = "changed label"
那么如何在基于storyboard构建的Cocoa应用程序中以编程方式更改窗口的标题?
答案 0 :(得分:48)
您的代码有两个问题:
viewDidLoad
被称为
NSViewController
没有窗口属性要修复第一个,您可以覆盖viewDidAppear()
。 视图完全转换到屏幕后,此方法称为。此时它已被添加到窗口中
要获得对窗口标题的引用,您可以通过其视图访问视图控制器的窗口:self.view.window.title
只需将以下内容添加到视图控制器子类中,窗口标题应更改:
override func viewDidAppear() {
super.viewDidAppear()
self.view.window?.title = "changed label"
}
答案 1 :(得分:0)
这对我有用,currentDict是从之前的viewController传递的NSDictionary
var currentDict:NSDictionary?
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
if let myString:String = currentDict?["title"] as? String {
self.title = myString
}
}