Как я могу получить ViewController из TabBarController в AppDelegate?

Я использую раскадровку iOS5, а мой начальный контроллер представления TabBarController, есть четыре отношения к view1 и view2 и view3 и view4, поэтому, как я могу получить контроллер view3?

Я пробовал:

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

Но это не работает...

Ответ 1

Вы сказали, что ваш начальный (корневой) контроллер представления является UITabBarController, но вы имеете в виду контроллер вида с контроллером навигации с контроллером панели вкладок. Вы смешиваетесь в своей иерархии диспетчера взглядов?

изменить:

если ваш контроллер корневого представления фактически является только контроллером панели вкладок, и вы хотите получить 3-ей вкладку, вот код:

[[((UITabBarController *)self.window.rootViewController) viewControllers] objectAtIndex:2];

Ответ 2

[self.tabBarController setSelectedIndex:2];

Ответ 3

Попробуйте этот путь

В любом виде контроллер

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

это возвращает ваш объект контроллера вида. Приложите его к контроллеру просмотра, и вы готовы его использовать. run и Go

Ответ 4

   UIViewController *loginViewController=self.window.rootViewController;

   UITabBarController *controller=loginViewController.tabBarControllerObj;

   UIViewController *selectedController=controller.selectedViewController;

Из этого вы получите выбранный контроллер просмотра.

Для того, чтобы весь контроллер просмотра просто заменил

NSArray *viewControllers = [controller viewControllers];

Ответ 5

Swift 4.0

let viewC = self?.tabBarController.viewControllers.first // will give single Navigation Controller on index 0
let viewC = self?.tabBarController?.viewControllers// will give array of Navigation Controller

Далее вы можете проверить Visible ViewController

if let nav = viewC as? UINavigationController {
   if nav.visibleViewController is YourViewControllerName{
        // Do Code
     }
}