マスター詳細ナビゲーションをセットアップしようとしています。ストーリーボードを使用します。マスターは動的テーブルで、詳細は静的テーブルです。 コントローラーのアウトレットとして nameLabel をセットアップしましたが、viewDidLoad でそれにアクセスしようとすると、まだ nil に設定されています。
prepareForSegue を使用する代わりに、次のように詳細ビューをプッシュする didSelectRowAtIndexPath を使用しました (TableViewBindingHelper を使用しているため、https: //github.com/ColinEberhardt/ReactiveTwitterSearch/tree/master/ReactiveTwitterSearch/Util を参照)
func showLessonView(lessonVM: LessonViewModel) {
let lessonViewController = LessonViewController(WithViewModel: lessonVM)
self.navigationController?.pushViewController(lessonViewController, animated: true)
}
レッスンビューコントローラー:
import Foundation
import ReactiveCocoa
class LessonViewController: UITableViewController {
@IBOutlet var lessonNameLabel: UILabel!
private var viewModel: LessonViewModel
init(WithViewModel viewModel: LessonViewModel){
self.viewModel = viewModel
super.init(nibName: nil, bundle: nil)
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
bindData()
}
func bindData() {
// null here!
if (lessonNameLabel != nil) {
lessonNameLabel.rac_text <~ viewModel.name
}
}
}
どうすればこれを修正できますか?
私が見た他のサンプルコードは、 init(coder aDecoder: NSCoder) コンストラクターを呼び出すセグエでナビゲーションを実行し、すべてのアウトレットは既に初期化されています。