2016-04-19 14 views
0

私はそれの中にtableViewとストーリーボードからコントローラを作成します。いつサブビューがストーリーボードからスーパービューに追加されますか?

コンパイルして実行した後、tableViewが表示されますが、self.view.subviewsを使用してviewDidLoadメソッドのサブビューを取得すると、tableViewが見つかりません。

また、viewDidLoadで[self.tableView removeFromSuperview]メソッドを実行しようとしましたが、tableViewが最後に表示されます。

viewDidLoadが実行されたときに、tableViewがまだスーパービューに追加されていないようです。しかし、ストーリーボードで作成された別のコントローラーでも、viewDidLoadでself.view.subviewsを使用してtableViewを取得できます。

これにつながるのはいつですか、またいつtableViewを追加するのでしょうか。

+0

私はviewDidAppearでself.view.subviewsを使用すると、両方のコントローラが私にtableViewを返しますが、なぜviewDidLoadにはありませんか? – wkx

+1

tableViewのステータスを確認する前に、viewDidLoadでsuperを呼び出していますか? –

+0

こんにちは、あなたはIB vcクラスで接続しましたか? Plsはそれが正しいかどうかを確認します。 –

答えて

0

私のコメントを無視して、私はスーパーを呼び出すことは答えだとは思わない(まだ一般的には良いことだが)。

ドキュメンテーションは明確ではありませんが、viewDidLoadで頼りになると思われるのは、ビュー自体が読み込まれているかどうかだけです。サブビューではありません。

サブビューにアクセスする必要がある場合は、this SO answerに記載されているようにviewDidLayoutSubviewsに存在することが保証されていますが、サブビューがレイアウトされている場合は常に呼び出されます(ユーザーがデバイスを回転させたときにも呼び出されます)。

サブビューがロードされるとすぐに取得する必要がある場合は、サブクラス化して独自のviewDidLoadメソッドをオーバーライドできます。

関連する問題