3

iOS 5.0 でカスタム ビュー コントローラー サブクラスの奇妙な動作に直面しています。iPad アプリケーションで標準のナビゲーション コントローラーなどを使用していませんが、すべてのビュー コントローラーを自分で提示しています。これが、-viewWillAppear および viewDidAppear メソッドを手動で呼び出す必要がある理由です。

iOS 5.0 から、View Controller のビューをサブビューとして追加すると、ビューの View Controller インスタンスでこれらのメソッドが自動的に呼び出されるようになりました。つまり、私の場合、これらのメソッドは 2 回呼び出されます。

助言がありますか?独自のビュー ライフサイクル メソッドを作成し、アプリ全体を書き直す以外に?

どうもありがとう!

4

2 に答える 2

6

以下を UIViewController に追加して、これらの -viewWill... および -viewDid... メソッドの自動呼び出しを無効にします。

-(BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers {
   return NO;
}

これにより、iOS 5.0 はサブビューを追加するときにこれらのメソッドの呼び出しを強制的に停止し、iOS 4.x では何も壊れません。iOS 4.x のデバイスをサポートし続ける限り、私はこの方法を使用しています。iOS 4 のサポートを終了したら、ビュー コントローラーを交換する新しいアプローチを使用するようにコードをリファクタリングします (hypercrypt によって投稿されたセッション 102 ビデオで説明されているように)。

于 2011-11-08T19:17:48.700 に答える
1

セッション 102 - WWDC11からの UIViewController コンテインメントの実装を確認してください。

iOS 5 では、適切なビュー コントローラー コンテインメントを使用する必要があります。

于 2011-10-17T15:20:25.263 に答える