「viewWillAppear」は、xcode 4.5 では iphone 4.3 シミュレーターでは呼び出されませんが、iPhone 5.0 または iPhone 6.0 シミュレーターで実行される場合は、このメソッドが呼び出されます。
なぜ?また、ios 4.3 でコントローラーのビューが表示されるときに何かしたい場合はどうすればよいですか?
あなたのコメントに基づいて、問題は iOS 4 のコンテナー ビュー コントローラーの欠如にあるようですview
。 、他のすべての新しいメッセージview[Will/Did]Appear
とともに —viewDidLayoutSubviews
など。
4 では、コンテナー ビュー コントローラーを構築することは明示的に許可されておらず、ビューをそのコントローラーに接続する意図的な特定の逆方向リンクはありません。
その結果、ナビゲーション コントローラーをビューに追加しても、取得されませんviewDidAppear
。ビューが表示されたことを認識しないため、ビューが表示されたことをコントローラに通知しません。
おそらく、あなたができる最善の方法は、(i) iOS 4 で動作しているかどうかを確認することで、それを回避することです。viewWillAppear/viewDidAppear/viewWillDisappear/viewDidDisappear
(ii) もしそうなら、あなたの封じ込められたコントローラーに人為的な投稿をする。
個人的な経験に基づくと、iOS 4 (少なくとも 4.3) は実際に実装されaddChildViewController:
ていますが、文書化された最新のバージョンとは異なります。したがって、完全に正確な機能チェックではありませんが、if([self respondsToSelector:@selector(presentingViewController)])
これらのメッセージを手動で伝播する必要があるかどうかを判断するために使用する傾向があります。
[*] また、addChildViewController:
すべてのメッセージが全方向に正しく移動することを確認するために電話する必要があります
「View Controller Abusing」に関連している可能性があると思います。コンテナ ビュー コントローラが正しく使用されているかどうかを確認します。詳細については、この投稿を参照してください。