私はビューコントローラのライフサイクルを理解しようとしていますが、私はawakeFromNib
について少し矛盾した記述を読んでいます。ドキュメントによれば、すべての店舗はawakeFromNib
であるが、I see that it's not always trueに設定する必要があります。電話の注文はawakeFromNib
,prepareForSegue
の間でどのようになりますか?店舗はいつ利用可能になりますか?awakeFromNibとアウトレット - awakeFromNibを呼び出すとアウトレットとセグがセットされます
0
A
答えて
0
ビューコントローラとそのビュー階層は、実行時に別々のnibファイルからロードされます。ビュー階層へのアウトレットは、ビュー・コントローラがロードされた後に実行されるビュー階層がロードされるまで接続されません。 (詳細はin this answerで説明しています)
ナビゲーションコントローラーに「マスター」ビューコントローラーがあるとします。マスタービューコントローラは、詳細ビューコントローラをプッシュするためにセグを実行します。イベントの順序は次のとおりです。
詳細ビューコントローラがそのペン先からロードされています。ストーリーボードのシーンに他のトップレベルのオブジェクトが含まれている場合は、これらもロードされます。
詳細ビューコントローラは
awakeFromNib
を受け取ります。シーン内の他のトップレベルオブジェクトへのディテールビューコントローラのアウトレットは接続されていますが、ビュー階層へのアウトレットは接続されていません。マスタービューコントローラは、
prepareForSegue
を受信し、詳細ビューコントローラを指しています。Segueは詳細コントローラをプッシュするようにナビゲーションコントローラに要求します。
ナビゲーションコントローラは、詳細ビューコントローラにそのビューを要求し、ナビゲーションコントローラのビュー階層に追加します。
詳細ビューコントローラはビュー階層nibをロードします。これにより、詳細ビューコントローラのアウトレットがビュー階層に接続されます。
ビュー階層内のすべてのオブジェクトは、
awakeFromNib
を受け取ります。詳細ビューコントローラは
viewDidLoad
を受け取ります。
関連する問題
- 1. NSWindowController awakeFromNibが2回呼び出されています
- 2. スーパークラスのawakeFromNibを呼び出す
- 3. initとawakeFromNib
- 4. awakeFromNibがViewControllerで呼び出されない
- 5. アウトレットとインスタンスメソッド
- 6. アウトレットとボタンが無視される
- 7. awakeFromNibのベニフィッツ?
- 8. awakeFromNib反対ですか?
- 9. アウトレットUICollectionViewCell
- 10. UITableViewCellアウトレット
- 11. viewDidLoadを使用するタイミングとawakeFromNibを使用するタイミング
- 12. Ember.jsアウトレットをモーダルウィンドウとしてレンダリング
- 13. awakeFromNib()がシミュレーションメトリックで動作しません
- 14. `dequeueReusableCellWithIdentifier`の後にUITableViewCellとそのアウトレットが初期化されていますか?
- 15. Monodevelop 2.8、Xcode 3.2.6、Interface Builder:アウトレットとアクション
- 16. awakeFromNibメソッドは、私のNSPersistenDocumentで
- 17. Ember.jsルーティング、アウトレット、アニメーション
- 18. スタティックテーブルビューセルのアウトレット
- 19. アウトレットを作ることができません。スウィフトIOS開発
- 20. awakeFromNibでサブビューを追加する
- 21. カスタマイズされたクラスのアウトレットを使用してメッセージを渡すことができない(または関数を呼び出す)
- 22. Angular2ネストされたルータのアウトレット
- 23. awakeFromNibの後にNSWindowは無しです
- 24. awakeFromNibは本当に何ですか?
- 25. アウトレットがロードされる前にアウトレットにアクセスしないようにする方法
- 26. 「接続」タップの下にある「IBインスペクタ」ウィンドウの「アウトレット」と「参照アウトレット」の違いは何ですか?
- 27. setTimeoutを呼び出すと、呼び出しスタックがクリアされますか?
- 28. startActivityForResult()を呼び出すときにonDestroy()が呼び出されます
- 29. ビュー内のオブジェクトとアウトレットを使用する際のエラー
- 30. iOS - Interface Builderアウトレットが初期化されていません
UIViewのライフサイクルで 'awakeFromNib'を使用する方が一般的です。しかし、あなたが探しているのは 'prepareForSegue'、' awakeFromNib'、 'viewDidLoad'です。awakeFromNibでアウトレットにアクセスできますが、まずビューコントローラーのビューにアクセスするために必要な注意書きを読んでください。他の質問のポスターが嘆かわしい、いわゆる「ハック」。 'viewDidLoad'で設定されたView Controllerを行う方がより安全で標準的です。 – beyowulf
ありがとうございます!したがって、完全に初期化されたビューとアウトレットが必要な場合は、[self view] –
でawakeFromNibを開始します。素早く、 'print(self.view)'のようなものを言うことができます。これはやや無意味なので、 'viewDidLoad'を使うことをお勧めします。 – beyowulf