Cocoa:如何在Swift的视图控制器中设置窗口标题?

时间:2014-06-16 02:02:31

标签: xcode cocoa swift

我试图构建一个在Xcode 6中使用storyboard和Swift的Cocoa应用程序。但是,当我尝试在NSViewController内改变窗口的标题时,下面的代码并没有在'工作。

self.title = "changed label"

当我在viewDidLoad()函数中编写上述代码时,生成的应用程序标题仍为window

此外,以下代码会导致错误,因为View Controller没有window这样的属性。

self.window.title = "changed label"

那么如何在基于storyboard构建的Cocoa应用程序中以编程方式更改窗口的标题?

2 个答案:

答案 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
    }

}