2013-07-29 4 views
19

Как переключиться на какую-либо вкладку в UITabBarController с помощью StoryBoard? Я попытался код ниже, но без успеха (вкладка не выбрана):Как настроить выбранную вкладку в UITabBarController с помощью StoryBoard?

self.tabBar.selectedIndex = 3; 

Честно говоря, я использовал СИБ файлы без раскадровки и этот код выше работал отлично в

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions 
      :(NSDictionary *)launchOptions 

, но теперь я могу» t установите вкладку программно. Возможно, есть еще одна проблема, которая не связана с выбором вкладки. Как переключить вкладки?

+1

Когда вы говорите «без успеха», что именно вы имеете в виду? Ошибка компилятора? Не выбрана ли вкладка? – Stavash

+0

О, спасибо, это очень важный комментарий. Да, вкладка не будет выбрана. –

+0

Как насчет setSelected ... Так вот, [self.tabBar setSelectedIndex: 3]; – Yanchi

ответ

27

Хватай экземпляр UITabBarController затем установите selectedViewController свойство:

yourTabBarController.selectedViewController=[yourTabBarController.viewControllers objectAtIndex:3];//or whichever index you want 
16

Александр, я думаю, ваша проблема становится правильный экземпляр вашей панели вкладок. Если панель вкладок контроллер вида корня, то вы можете сделать это, как это в вашем AppDelegate если метод didFinishLoading:

UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController; 
    [tabBar setSelectedIndex:3]; 

Дайте ему попробовать и сказать мне результат пожалуйста.

+3

* Swift Comment - 18 месяцев спустя, если вы преобразуете это в Swift в свой appDelegate, как показано выше, вы получите ожидаемый результат. Swift перевод: 'let tabBar: UITabBarController = self.window? .rootViewController as! UITabBarController' –

4

Это будет работать в stroryboard тоже ...

[self.tabBarController setSelectedIndex:3]; с этим добавить UITabBarControllerDelegate в .h

, а затем использовать эту delegate методы

- (BOOL)tabBarController:(UITabBarController *)theTabBarController shouldSelectViewController:(UIViewController *)viewController 
{ 
    return (theTabBarController.selectedViewController != viewController); 
} 
2

Вы можете достичь только это также с помощью раскадровки. Ctrl-drag от tabBarController к вашему ViewController (s) и выберите «Сцепление Segue, View Controllers». Первым выбранным ViewController будет стандартный/начальный ViewController.

8

* Swift Comment - 18 месяцев спустя, если вы конвертируете решение Yanchi в Swift в приложении appDelegate, вы получите ожидаемый результат. Swift перевод:

let tabBar: UITabBarController = self.window?.rootViewController as! UITabBarController 

tabBar.selectedIndex = 1 
+4

Спасибо Space Monkey. Пусть ваш корабль будет безопасным. –

+0

Спасибо, спасли мой день. –

0

Вы также можете установить закладку по умолчанию в "User Defined Runtime Attributes" с помощью раскадровки.

Выберите Tab Bar Controller от раскадровки, в правой панели выберите Удостоверение инспектора и добавить атрибут:

 
Key Path : selectedIndex 
Type  : Number 
Value : 2 (whatever number you want) 
Смежные вопросы