2012-05-03 8 views
0

今日、PopToRootNavigationControllerが呼び出された場合には、厄介なバグを見つけた後、表示されているView Controllerの順序がトラッキングされました( )。私はかなりショックを受けました。UINavigationController ... PopToRootNavigationControllerポップ・オーダー.. stange

のは、我々は、コントローラCにPopToRootを呼び出す場合、スタックから削除され、第1のコントローラは、Bが削除された後にのみ、Bである私たちは3つのビューコントローラ

A(ルート)

B 

    C 

を持っているとしましょう、コントローラーCが取り外されています。

私はまったく反対のことが予想されました。プッシュされた最後のものが最初にポップされたものです。

リンゴがこの種の行動を選択する理由を説明できる人はいますか?ルートビューコントローラ以外

popToRootViewControllerAnimated: 

ポップスタック上のすべてのビューコントローラと表示を更新:私は間違っていないよ場合

おかげ

+0

コードを投稿してください。 – Raptor

答えて

0

探しているものである(あなたの状況ではトップビューコントローラは、私は推測するCとなります)

希望は、あなたがスタック上に100 viewcontrollersを持っていて、

popToRootViewControllerAnimated: 
を実行したいと言います

このように、最後のビューコントローラーに達するまで、すべてのビューコントローラーを1つずつポップするのは理にかなっていません。なぜなら、すべてのオブジェクトを1つずつ解放することを期待しているからです。これは時間がかかります。最後のビューコントローラにポップアップし、2番目のビューコントローラを解放します。このようにして、一度2ndがリリースされると、その後のすべての子オブジェクトも解放され、より高速になります(ヒープシステムで動作すると思います)。指定されたビューコントローラがナビゲーションスタックの最上位になるまで

popToViewController:animated: 

..あなたのようなそれをポップするとき、これはビューコントローラをポップ

これは、空気の一部をクリアすることを望んでいます。

+0

今よりもはっきりと...ありがとう! – Patz

0

は、ここでの契約です。

しかしpopViewControllerAnimated:

ナビゲーションスタックからトップビューコントローラをポップし、表示を更新します。これはあなたが...

関連する問題