2009-08-24 18 views
2

私のアプリには2つのタブがあり、左側のタブは通常のUIViewController、右側のタブはその内部のテーブルビューを持つナビゲーションコントローラです。私は、ユーザーが左のタブのボタンを押して、右のタブのテーブルビューの特定の行に属する特定の詳細ビューにジャンプすることを許可したいと思います。テーブルビュー自体にタブとpushViewControllerを同時に切り替えるにはどうすればいいですか?

私は何の問題の特定の詳細ビューの例を表示していません:

[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]; 

しかし、それは動作しません。

EDIT:

私はそれだけでタブを切り替えたがビューをプッシュするdoesntの上記のコードを試してみてください

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

EDIT 2:

をいただきました!各タブに説明しようとする:

 
Root (Tab Bar Controller) 
| 
--(Left Tab)-- UIViewController (I want to go from here...) 
| 
--(Right Tab)---UINavigationController 
      | 
      ---UITableViewController 
       | 
       ----UIViewController (...to here) 
        ^specific view with data from specific row 
         in table view (that is 'theView' from above) 
+0

代わりにワットが発生しますか? – Daniel

答えて

1

あなたはタブバーを切り替えて同じ方法でナビゲーションコントローラのスタックにViewControllerをを推進している場合は、「wouldn self.navigationControllerを使用したい。私が正しく理解している場合は、右のタブのnavigationControllerにそれを追加します。私はあなたが使用したいと考えている:

[[[[self tabBarController] selectedViewController] navigationController] pushViewController:theView animated:YES]; 
+0

それは私にとってはうまくいきません。あなたのコードが正しく理解されている場合は、タブバーに現在選択されているビューコントローラの親であると思われるナビゲーションコントローラのpushviewを呼び出します。しかし、右のタブにしかないので、親ナビゲーションコントローラはありません。 –

+0

各タブの内容をもう一度説明できますか? – criscokid

4

私にとって正しい方法だった:

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

criscokidの答えはnavigationControllerに一つの冗長コールがあります。 selectedViewControllerは実際にはUINavigationViewControllerです。

+0

私は冗長な呼び出しで同じミスを犯していました。これは私のためにそれを固定した。 –

関連する問題