1

カスタムをnavigation実装していますが、問題があります。

をポップした後UIViewController、手動で呼び出しますviewWillDisappearが、何らかの理由で、それを呼び出すと再び呼び出さremoveFromSuperviewUIViewController's UIViewます。

どうすればそれが起こらないようにできますか?これは次の場合に発生します。iOS5ではテストしてiOS 6いませんiOS 4。すでに使用しています。

 - (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers {
     return NO;
}

しかし、それは役に立ちません。

私は使用していませんdismissViewControllerAnimated。カスタムナビゲーションコントローラーを実装し、独自のスタックを使用し、UIViewControllerのビューを画面上と画面外でアニメーション化して「プッシュ」および「ポップ」し、viewWillAppear手動で呼び出しますviewWillDisappearUIViewController問題は、画面外に「ポップ」した後[currentViewController.view removeFromSuperView]、メソッドを呼び出すとviewWillDisappearメソッドが呼び出されることです。これは、すでに呼び出しているので、必要ありません。

どんな助けでもいただければ幸いです。

4

2 に答える 2

2

わかりました、私は解決策を見つけました。問題は、私が呼び出し[controller.view removeFromSuperview]ていて、呼び出された呼び出しスタックに気づいたこと[UIViewcontroller _setViewState:animated]でした。だから私は小さなハックをしました:

UIView *view = controller.view;
controller.view = nil;
[view removeFromSuperView];
[controller release];

[view removeFromSuperview]を呼び出すときに、viewWillDisappearが呼び出されなくなりました。これが誰かを助けることを願っています。

于 2012-11-22T12:47:13.320 に答える
0
[self dismissViewControllerAnimated:YES completion:NULL];

これを使ってみてください...。

于 2012-11-22T12:25:55.050 に答える