xcode - Cocoa:如何在 Swift 的 View Controller 中设置窗口标题?

标签 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 应用程序中以编程方式更改窗口的标题?

最佳答案

您的代码有两个问题:

  • 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/

相关文章:

ios - Storyboard和 CustomCells

ios - NSNumber numberWithFloat 与 Init 和 alloc

ios - Swift:无法从 xib 访问 subview

objective-c - 设置 NSStatus 项的标题文本颜色

objective-c - 获取并选择路径 Objective C

ios - 如何为以前的值制作检索按钮

ios - 推送通知接收,但未显示在设备 ios 中

ios - 如何在 iOS 的 UITableView 中显示可点击的 WordPress 博客文章标题?

objective-c - 更改窗口按钮的控制色调

ios - 如何使用#selector 函数传递变量?以及将什么传递给 textField : UITextField?