Вопрос по ipad, ios, iphone, ios5 – Как я могу получить ViewController из TabBarController в AppDelegate?

11

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

Я старался:

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

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

Ваш Ответ

5   ответов
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
     }
}
3
   UIViewController *loginViewController=self.window.rootViewController;

   UITabBarController *controller=loginViewController.tabBarControllerObj;

   UIViewController *selectedController=controller.selectedViewController;

Для получения всего вида контроллера просто замените

NSArray *viewControllers = [controller viewControllers];
7

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

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

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

Какой будет версия Swift 3 этого ответа?
9
[self.tabBarController setSelectedIndex:2];
Есть ли способ получить объект (вид контроллера) по выбранному индексу?
Хотя это самый минимальный ответ за всю историю, это самый простой и лучший способ получить tabBarController. UITabBarController добавляет категорию в UIViewController, которая возвращает UITabBarController, если представление имеет единицу, или NULL, если это не так.
31

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

редактировать:

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

[[((UITabBarController *)self.window.rootViewController) viewControllers] objectAtIndex:2];
Error: User Rate Limit Exceeded Ariel Zehao Zhang
Error: User Rate Limit Exceeded Ariel Zehao Zhang

Похожие вопросы