Ответ 1
Возьмите экземпляр UITabBarController
, затем установите свойство selectedViewController
:
yourTabBarController.selectedViewController=[yourTabBarController.viewControllers objectAtIndex:3];//or whichever index you want
Как я могу переключиться на некоторую вкладку в UITabBarController
с помощью StoryBoard? Я пробовал код ниже, но не успел (вкладка не выбрана):
self.tabBar.selectedIndex = 3;
Честно говоря, я использовал файлы nib без StoryBoard, и этот код выше работал отлично в
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions
:(NSDictionary *)launchOptions
но теперь я не могу настроить вкладку программно. Возможно, есть еще одна проблема, которая не связана с выбором вкладки. Как я могу переключаться на вкладки?
Возьмите экземпляр UITabBarController
, затем установите свойство selectedViewController
:
yourTabBarController.selectedViewController=[yourTabBarController.viewControllers objectAtIndex:3];//or whichever index you want
Александр, я думаю, что ваша проблема заключается в получении правильного экземпляра панели вкладок. Если ваша панель вкладок является вашим контроллером корневого представления, вы можете сделать это, как это, в вашем appdelegate, если метод didFinishLoading:
UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController;
[tabBar setSelectedIndex:3];
Попробуйте и скажите мне, пожалуйста, результат.
* Swift Comment - 18 месяцев спустя, если вы конвертируете решение Yanchi в Swift в свой appDelegate, вы получите ожидаемый результат. Перевод Swift:
let tabBar: UITabBarController = self.window?.rootViewController as! UITabBarController
tabBar.selectedIndex = 1
Это тоже будет работать в страйке...
[self.tabBarController setSelectedIndex:3];
с этим добавлением UITabBarControllerDelegate
в .h
а затем используйте этот метод delegate
- (BOOL)tabBarController:(UITabBarController *)theTabBarController shouldSelectViewController:(UIViewController *)viewController
{
return (theTabBarController.selectedViewController != viewController);
}
Я использую IBInspected в LSwift
: https://www.dropbox.com/s/oo50l56zulxtlpv/Screenshot%202015-05-21%2010.54.45.png?dl=0
extension UITabBarController {
@IBInspectable var selected_index: Int {
get {
return selectedIndex
}
set(index) {
selectedIndex = index
}
}
}
Вы можете достичь этого также с помощью раскадровки. Ctrl-drag от tabBarController к вашему ViewController (s) и выберите "Сцепление Segue, View Controllers". Первым выбранным ViewController будет стандартный/начальный ViewController.
Вы также можете установить вкладку по умолчанию в Пользовательские атрибуты времени выполнения с помощью раскадровки.
Выберите панель управления вкладками из раскадровки, в правой панели выберите Identity Inspector и добавьте атрибут:
Key Path : selectedIndex Type : Number Value : 2 ( whatever number you want )