12

詳細ビューコントローラーに次のコードがあります。

- (void)viewWillLayoutSubviews {
    [super viewWillLayoutSubviews];
    [self configureView];
}

の最初の行にブレークポイントを設定してこのビュー コントローラに移動すると、が 2 回呼び出され-configureViewているように見えます。[self configureView]でも:

  • どちらのメソッドもヒットし、スタックは次のようになります。

スタック

  • 上記のコードでコメント[self configureView]すると、0 回ヒットします。
  • スタックが両方とも同じであることから明らかなように、-configureViewは自身を再帰的に呼び出しません。
  • -configureView上記のコードでのみ呼び出されます。
4

2 に答える 2

11

Appleのドキュメントから:

viewWillLayoutSubviews メソッドは、ビューがその親によってサイズ変更および配置された後にも呼び出されます。

GivenviewWillLayoutSubviewsは、コントローラーのビューが変更されるたびboundsに呼び出されますが、1 回だけ呼び出されるという保証はありません。たとえば、回転が発生するたびに呼び出されます。

あなたのconfigureViewメソッドはおそらくどこか他の場所、おそらくviewWillAppearviewDidAppearまたはHermannの提案によるBirdDetailitemのカスタムミューテーターから呼び出す方がよいでしょう。

于 2013-02-18T23:28:03.243 に答える
1

通常のパターンに従うと、configureView が のセッターで呼び出されますdetailItem。設定方法を確認してください。でよく[detailViewController setDetailItem:something]呼ばれprepareForSegue:ます。

重要な点は次のとおりです。

于 2013-02-18T22:47:28.150 に答える