12

私は iOS5 ストーリーボードを使用しており、最初のビュー コントローラーは ですTabBarController。view1 & view2 & view3 & view4 には 4 つの関係があるため、view3 のビュー コントローラーを取得するにはどうすればよいですか?

私は試した:

[[[[self.window.rootViewController navigationController] tabBarController] viewControllers] objectAtIndex:2];

しかし、うまくいきません...

4

5 に答える 5

35

最初の(ルート)ビュー コントローラーは UITabBarController であると言いましたが、タブ バー コントローラーを備えたナビゲーション コントローラーを備えたビュー コントローラーを参照しています。ビュー コントローラの階層で混乱していませんか?

編集:

ルート ビュー コントローラーが実際には単なるタブ バー コントローラーであり、3 番目のタブを取得したい場合、コードは次のとおりです。

[[((UITabBarController *)self.window.rootViewController) viewControllers] objectAtIndex:2];
于 2012-05-21T16:39:20.553 に答える
9
[self.tabBarController setSelectedIndex:2];
于 2012-12-04T10:41:54.777 に答える
8

この方法を試してください

任意のView Controllerで

 YourViewController *yourViewController= (YourViewController*)  [self.tabBarController.viewControllers objectAtIndex:3];

this return your that View Controller object.Cast it to your View Controller で、それを使用する準備が整いました。ランアンドゴー

于 2013-11-11T14:33:42.333 に答える
3
   UIViewController *loginViewController=self.window.rootViewController;

   UITabBarController *controller=loginViewController.tabBarControllerObj;

   UIViewController *selectedController=controller.selectedViewController;

これから、選択したView Controllerを取得します。

すべてのView Controllerを取得するには、単に置き換えます

NSArray *viewControllers = [controller viewControllers];
于 2014-01-23T14:41:54.653 に答える