Как я могу получить 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
}
}