0

コンテナー ビュー コントローラー (スクリーンショットを参照) を作成しようとしており、右側にナビゲーション コントローラーを追加したいのですが、いくつか問題があります。手伝って頂けますか?

このコードを親コントローラー (viewDidLoad) に追加すると、ナビゲーション コントローラーのコンテナー ビューにアクセスできないため、他の位置/サイズのビューが表示されます。

試した:

[self addChildViewController:_detailNavigationController];
_detailNavigationController.view.frame = CGRectMake(256, 49, 768, 651);
[self.view addSubview:_detailNavigationController.view];

また、これも、明らかに最初のビューでのみ機能します。

[self addChildViewController:_detailNavigationController];
_detailNavigationController.topViewController.view.frame = CGRectMake(256, 49, 768, 651);
[self.view addSubview:_detailNavigationController..topViewController.view];

ナビゲーションコントローラーのコンテナービューを取得するためにハックを試みましたが、機能しません。画面に何も表示されず、デバッガーを使用してビューがゼロであることに気付きました。それとは別に、おそらく Apple はこれを好まないでしょう。

[self addChildViewController:_detailNavigationController];
UIView *view = [_detailNavigationController valueForKey:@"_containerView"];
view.frame = CGRectMake(256, 49, 768, 651);
[self.view addSubview:view];

何か不足していますか?
独自のカスタマイズされたコンテナー ビュー コントローラー内にナビゲーション コントローラーを追加する方法を知っていますか?
前もって感謝します!

スクリーンショット: http://img803.imageshack.us/img803/2464/screennjz.png

4

1 に答える 1

1

カスタム クラス MasterViewController と DetailedViewController は UITableViewController のサブクラスです。NavigationController は UINavigationController のサブクラスであり、SplitViewController は UISplitViewController のサブクラスです。

ご覧のとおり動作しますが、ナビゲーション コントローラーからビューをポップすると問題が発生します。これを修正する方法を見つけたら、私に知らせてください。

ここに画像の説明を入力

    MasterViewController *master = [[MasterViewController alloc] init];

    NavigationController *masterNav = [[NavigationController alloc] initWithRootViewController:master];

    DetailedViewController *detailed = [[DetailedViewController alloc] init];

    NavigationController *detailedNav = [[NavigationController alloc] initWithRootViewController:detailed];

    myVC = [[SplitViewController alloc] init];

    [myVC setViewControllers:[NSArray arrayWithObjects:masterNav, detailedNav, nil]];
于 2013-02-20T17:52:54.793 に答える