IPhone Dev: активировать вид кнопки tabBar

У меня есть приложение с tabBar, которое обрабатывает все представления. В первом представлении у меня есть процесс входа в систему. Когда этот процесс завершится, я хочу автоматически перейти ко второму представлению tabBar, не заставляя пользователя щелкать соответствующую кнопку tabBar.

Все, что у меня есть до сих пор, это выделить кнопку следующим образом:

myTabBar.selectedItem = [myTabBar.items objectAtIndex:1];

Но я понятия не имею, как автоматически вывести второй вид, связанный с этой кнопкой, на передний план. До сих пор пользователю приходилось нажимать кнопку, когда она подсвечивается (выбирается).

Любая идея о том, как это сделать? Является ли это возможным? Это будет высоко ценится. Спасибо.


person Community    schedule 29.07.2009    source источник


Ответы (3)


Используйте selectedViewController или selectedIndex соответствующих методов UITabBarController.

В ответ на комментарии к этому ответу я привел пример того, как это можно сделать:

id firstViewController = [[FirstViewController alloc] initWithNibName:@"FirstView" bundle:[NSBundle mainBundle]];
id secondViewController = [[SecondViewController alloc] initWithNibName:@"SecondView" bundle:[NSBundle mainBundle]];

self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:firstViewController, secondViewController, nil];

[firstViewController release];
[secondViewController release];

// Select the second tab bar item and its view
self.tabBarController.selectedIndex = 1;

[self.window addSubview:tabBarController.view];
[self.window makeKeyAndVisible];

В моем тестировании кажется, что использование метода selectedViewController UITabBarController для установки текущего представления не обновляет свойство selectedIndex (отображается новое представление, но выбранный UITabBarItem не изменяется). Это отличается от поведения, обещанного в документации. Однако использование метода selectedIndex, как показано в приведенном выше фрагменте кода, должно работать нормально.

person titaniumdecoy    schedule 29.07.2009
comment
Извините, я совсем запутался с этим. Я пробовал это: rootController.selectedIndex = 1; rootController.selectedViewController.tabBarItem = [myTabBar.items objectAtIndex:1]; ... где rootController - это UITabBarController, и ни один из них не работает... не могли бы вы сказать мне, как использовать эти методы для получения того, что я хочу? Спасибо. - person ; 30.07.2009
comment
Это, что имеет больше смысла, тоже не работает: self.rootController.selectedViewController = [self.rootController.viewControllers objectAtIndex:1]; Любая подсказка о том, что я делаю неправильно? - person ; 30.07.2009
comment
Либо это... PickersAppDelegate *delegate = [[UIApplication sharedApplication] делегат]; self.rootController.selectedViewController = делегат.navController; Кажется, что selectedViewController не работает для моего контроллера :-S - person ; 30.07.2009
comment
Вы уверены, что UITabBarController связан с рассматриваемым UITabBar (через его свойство tabBar)? - person titaniumdecoy; 30.07.2009
comment
Спасибо за ответ, но это не сработало для меня. Возможно, проблема в свойстве tabBar, но я не знаю, что именно вы имеете в виду... У меня есть два viewController, связанные с первой и третьей кнопкой tabBar, и navController, связанный со вторым (тот, который я хочу активировать автоматически) Я не понимаю, почему метод selectedIndex не работает для моего rootController (контроллер tabBar). Как вы думаете, чего-то не хватает в IB? Я понятия не имею, что происходит - person ; 30.07.2009

вам следует реализовать протокол UITabBarControllerDelegate, как описано здесь: http://developer.apple.com/library/ios/#documentation/uikit/reference/UITabBarControllerDelegate_Protocol/Reference/Reference.html

чтобы изменить активную вкладку, используйте tabBarController:shouldSelectViewController: Как объяснено в документации «Вы можете использовать этот метод, чтобы динамически решить, следует ли сделать данную вкладку активной вкладкой».

person nicola    schedule 11.06.2011

Наконец я получил решение здесь:

iphone sdk: установить перейти к другому виду панели вкладок при нажатии кнопки из первого элемента панели вкладок

В любом случае спасибо.

person Community    schedule 30.07.2009
comment
Именно это я и предложил: tabController.selectedIndex = 1; - person titaniumdecoy; 30.07.2009