2012-02-24 4 views
1

階層ナビゲーションモードと任意のビュースワップモードの両方があるiOSアプリケーション用のインターフェイスを設計しています。あるモードでの任意のビューのレイアウトは、他のモードでの対応するビューのレイアウトとは異なります。UINavigationControllerをシミュレートする方法/ pushToViewControllerメソッド

私は、ユーザーがこれらのモードを行き来できるようにしたいと考えています。分離されたサブビューには、UINavigationControllerの階層の2レベル下に対応する詳細ビューがあるとします。ユーザーは、ナビゲーション詳細ビューに直接切り替えることができます。そこから、UINavigationController階層を上下に移動したり、彼が来た独立したサブビューに戻ることができます。

UINavigationControllerは、あなたが戻ってアップ階層を移動、それはあなたが階層の下位レベルに直接ジャンプ聞かせ該当するpushToViewController:animated:を持っていないとして、あなたはレベルをスキップできるようになる方法popToViewController:animated:を持っています。これは理にかなっています。ナビゲーションコントローラは、ターゲットビューを表示する前に、介入するビューをスタックにプッシュする必要があります。しかし、通常のプッシュ方法の表示を介在するビューは、ビジュアル・フラッシュとパフォーマンス・ヒットを引き起こします。

私が介在ビューのためのanimated:NOとし、透明に一時的に設定介在ビューで、2回連続pushViewControllerを呼び出すことによってpushToViewControllerをシミュレートした場合、私は妥当な性能を得るのだろうか?または、ナビゲーションモードが要求されたときに、ナビゲーションコントローラのスタックの後ろにの隔離されたビューを配置する必要がある場合は、複数の呼び出しをpushViewController,にして、navコントローラを前面に移動しますか?それとも、UIViewのadd/remove/insert/exchangeSubviewを使って、UINavigationControllerを一切使わずに、すべてのテーブルビュースタイルのナビゲーションを手動で行う必要がありますか?

答えて

1

私はがあなたの望むことを手助けするつもりだと信じています。

複数のビューコントローラをスタックに追加して最後のものに直接移動する場合は、スタック全体を明示的に設定し、最後に直接アニメーション表示することができます。

NSMutableArray* controllers = [NSMutableArray arrayWithArray:[self.navigationController viewControllers]]; 
[controllers addObject:newController1]; 
[controllers addObject:newController2]; 
[self.navigationController setViewControllers:controllers animated:YES]; 

これはあなたのビュースタックにnewController1newController2を押してnewController2への移行をアニメーション化します。

+0

ありがとうございます、はい、まさに私が欲しいものです! 「ナビゲーションスタック上の項目へのアクセス」の下にリストされているので、 'animated:'パラメータによって提供される手がかりにもかかわらず、アクセスされたビューを表示する*表示することはできません。あなたの時間を取って申し訳ありません。 – Wienke

+0

問題ありません:)喜んで助けてください – Aaron

関連する問題