3

アプリには 2 つのタブがあります。左側のタブは通常の UIViewController で、右側のタブはテーブル ビューを内部に持つナビゲーション コントローラーです。ユーザーが左タブのボタンを押して、右タブのテーブル ビューの特定の行に属する特定の詳細ビューにジャンプできるようにしたいと考えています。

テーブルビュー自体では、特定の詳細ビューを表示するのに問題はありません。

[self.navigationController pushViewController:theView animated:YES];

を使用してタブをジャンプすることもできます

self.tabBarController.selectedIndex = 1; // 1= right tab

しかし、両方を行う方法がわかりません。私はもう試した

self.tabBarController.selectedIndex = 1; // 1= right tab
// alloc and init theView here
[self.navigationController pushViewController:theView animated:YES];

しかし、それはうまくいきません。

編集:

上記のコードを試すと、タブが切り替わりますが、ビューはプッシュされません。

criscokid が提案したことも試しましたが、何も起こりません。

編集2:

各タブの内容を説明しようとしています:

ルート (タブ バー コントローラー)  
| |  
--(左タブ)-- UIViewController (ここから行きたい...)  
| |  
--(右タブ)---UINavigationController  
             | |  
             ---UITableViewController  
                 | |  
                 ----UIViewController (...ここまで)
                      ^ 特定の行のデータを含む特定のビュー
                        テーブル ビュー (上記の「theView」)
4

2 に答える 2

4

私にとって正しい方法は次のとおりです。

 UINavigationController * navigationController = (UINavigationController *) [[self tabBarController] selectedViewController];
 [navigationController pushViewController:viewController animated:YES];

criscokid の回答には、への冗長な呼び出しが 1 つありますnavigationController。それは、あなたselectedViewControllerが実際にUINavigationViewController.

于 2011-11-04T08:27:25.493 に答える
1

タブ バーを切り替えて、同じメソッドで ViewController をナビゲーション コントローラー スタックにプッシュする場合は、self.navigationController を使用したくないでしょう。私が正しく理解している場合は、右側のタブのナビゲーションコントローラーに追加してください。私はあなたが使いたいと思うと信じています:

[[[[self tabBarController] selectedViewController] navigationController] pushViewController:theView animated:YES];
于 2009-08-24T21:41:01.217 に答える