0

iPad アプリケーションで UITabBar から分割ビューに移動しました。

ビュー コントローラーは、マスターからディテールに送信され、UINavigationController に配置されます。

// Detail manager called when a cell is selected on the master
UINavigationController *detailNavigationController = [[UINavigationController alloc] initWithRootViewController:_detailViewController];

UIViewController *mainNavigationViewController = [self.splitViewController.viewControllers objectAtIndex:0];
NSArray *viewControllers = [[NSArray alloc] initWithObjects:mainNavigationViewController, detailNavigationController, nil];
self.splitViewController.viewControllers = viewControllers;

これで、マスターのセルが選択されるたびに、詳細ビューのナビゲーション コントローラーがルートから開始されます。

代わりに、タブ バー コントローラーと同じ動作をしたいと考えています。あるタブから別のタブに移動すると、各タブのナビゲーション スタックが維持されます。また、同じタブを 2 回選択すると、ナビゲーション スタックがルート ビュー コントローラーにポップされます。

分割ビュー ベースのアプリケーションでこれを適切な方法で実装するにはどうすればよいですか?

4

2 に答える 2

1

マスター テーブルのセルごとにナビゲーション コントローラーを作成する必要があります。セルをタップすると、それに応じてセルが切り替わります。選択したセルがタップされた場合はpopToRootViewController:animated:、表示されているナビゲーション コントローラーを呼び出します。もちろん、UISplitViewControllerナビゲーション コントローラーへの参照を保持するには、サブクラス化する必要があります。また、分割 VC を伝えるために作成する必要がありMaterTableDelegateます。彼は詳細側で navcon を変更する必要があります。

于 2013-01-13T11:53:10.907 に答える
0

Levi の提案から始めて、実用的なソリューションを実装しました。要約する:

  • サブクラスUISplitViewController
  • UINavigationController必要なそれぞれへの公開参照を作成します
  • サブクラスの init 内で、UISplitViewControllerすべてのナビゲーション コントローラーをそれぞれのルートで初期化します。UIViewControllers
  • マスター/ディテールの実装に従って、マスター ビューでセルを選択するたびに、(UISplitviewcontrollerサブクラスで宣言したすべてのナビゲーション コントローラーの中で) 適切なナビゲーション コントローラーがディテール ビューに表示されるようにします。これをNSinteger詳細マネージャーのプロパティ (マスター セル選択で設定) で管理して、詳細ビューに表示するナビゲーション コントローラーを指定しました。
  • 同じマスター ビュー セルが 2 回選択された場合は、対応するナビゲーション コントローラーをルートにポップして、同じUITabBar動作をシミュレートします。

これが誰かを助けることを願っています。

于 2013-01-14T08:55:35.930 に答える