NSTextField の初期化の方法について
NSTextField
に文字列の初期値を View が描画される前に代入する方法を教えてください。
OSX 10.10.1(Yosemite) + Xcode 6.1 + Swift 1.1 で NSTextFiled
を利用したプログラムを作っています。NSTextField を初期化するプログラムを書こうとしたところ、次のようなエラーがでました。
fatal error: unexpectedly found nil while unwrapping an Optional value
fatal error になる原因は、NSTextField.stringValue
が nil
であるにもかかわらず unwrap されたからだと思いますが、どこで初期化するべきか、よくわかりませんでした。
また、NSTextField
は初期値を表示することがあまりないためか、初期値をセットするコードがうまく探せませんでした。Objective-C であれば AppDelegate
で初期化するとの記事を読みましたが、Swift では ViewController
でするべきという話もあり、よくわかりませんでした。
playground で次のコードを動かしてみました。
import Cocoa
var str = "Hello, playground"
var strnil: String! = nil
strnil = str
println("\(strnil)")
は特に問題なく動くようでした。ですので、ViewController や Storyboard 周りの設定が悪いのか、初期化する位置が悪いのだと想像しているのですが…
Storyboard の画面のサンプルとコードは以下のとおりです。AppDelegate はデフォルトのままです。
よろしくお願いいたします。
ViewController.swift
import Cocoa
class ViewController: NSViewController {
@IBOutlet weak var textField: NSTextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override var representedObject: AnyObject? {
didSet {
// Update the view, if already loaded.
}
}
required init?(coder: NSCoder) {
//fatalError("init(coder:) has not been implemented")
super.init(coder: coder)
textField.stringValue = "a string"
}
}