ストーリーボードとXcode 6のSwiftを使用するCocoaアプリで構築しようとしましたが、NSViewController
内からウィンドウのタイトルを変更しようとすると、次のようになります。コードが機能しません。
_self.title = "changed label"
_
上記のコードをviewDidLoad()
関数で記述した場合、結果のアプリのタイトルはwindow
のままです。
また、View Controllerにはwindow
などのプロパティがないため、次のコードではエラーが発生します。
_self.window.title = "changed label"
_
では、ストーリーボード上に構築されたCocoaアプリでプログラムによってウィンドウのタイトルを変更するにはどうすればよいですか?
コードには2つの問題があります。
viewDidLoad
が呼び出されますbeforeビューがウィンドウに追加されますNSViewController
にはウィンドウプロパティがありません最初のものを修正するには、viewDidAppear()
をオーバーライドします。このメソッドはafterと呼ばれ、ビューは画面に完全に移行しました。その時点ですでにウィンドウに追加されています。
ウィンドウタイトルへの参照を取得するには、ビューを介してビューコントローラーのウィンドウにアクセスできます:self.view.window.title
以下をビューコントローラサブクラスに追加するだけで、ウィンドウのタイトルが変更されます。
override func viewDidAppear() {
super.viewDidAppear()
self.view.window?.title = "changed label"
}
これは私にとってはうまくいきました、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
}
}