Как переключиться на элемент панели вкладок в представлении «Дополнительно»?

Я программирую приложение в target c для Iphone/Ipad. У меня есть некоторые элементы в «больше» на вкладке. Я хочу переключиться на одно из этих представлений. Как мне это сделать? Обычно я бы использовал selectedIndex, но он не работает на вкладке «Дополнительно».


person Sasha Grievus    schedule 26.03.2013    source источник


Ответы (2)


Чтобы выбрать контроллер представления на большем экране, вы должны сначала выбрать больше контроллера представления, как это отображалось в предыдущем ответе:

[tabBarController setSelectedViewController: [tabBarController moreNavigationController]]

А затем выполните метод pushViewController для большего количества контроллеров просмотра.

[[tabBarController moreNavigationController] pushViewController:neededViewController animated:NO]

Или используйте лучший способ:

[tabBarController setSelectedViewController: neededViewController ]
person Max Ivashkevich    schedule 26.03.2013
comment
как найти нужный ViewController? Если я создаю новый (Home *homeView = [[Home alloc] init]; [tabBarController setSelectedViewController: homeView ];), xcode во время выполнения сообщает мне о завершении приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «-[UITabBarController setSelectedViewController: ] можно выбрать только контроллер представления в списке контроллеров представления на панели вкладок. Home — это контроллер представления, управляемый панелью uitabbar. - person Sasha Grievus; 27.03.2013
comment
Вы можете выбрать выбранный контроллер представления, только если он содержится в массиве tabBarController.viewControllers. [tabBarController setSelectedViewController:[tabBarController.viewControllers objectAtIndex:neededIndex]] - person Max Ivashkevich; 27.03.2013
comment
Спасибо! Этот код работает отлично! Могу ли я попросить вас добавить его (изменив на ваше усмотрение) к вашему ответу, чтобы сделать его более полным? [tabBarController setSelectedViewController: [tabBarController.viewControllers objectAtIndex:7]]; - person Sasha Grievus; 27.03.2013

[myTabBarController setSelectedViewController: viewControllerThatYouNeed];

Изменить:

Попробуйте использовать свойство selectedViewController UITabBarController. Из документов Apple:

Blockquote В iOS 3.0 и более поздних версиях это свойство можно использовать для выбора любого из контроллеров представления в свойстве viewControllers. Сюда входят контроллеры представлений, которые управляются контроллером навигации «Дополнительно» и элементы панели вкладок которых не отображаются на панели вкладок.

person Dmitry Zhukov    schedule 26.03.2013
comment
это приводит к большему количеству просмотров. если я хочу перейти к элементу, который находится внутри дополнительного представления? - person Sasha Grievus; 26.03.2013
comment
я не могу получить код для выбора правильного контроллера представления. Если я создам новый (Home *homeView = [[Home alloc] init]; [tabBarController setSelectedViewController: homeView];) xcode во время выполнения сообщает мне о прекращении работы приложения из-за необработанного исключение 'NSInvalidArgumentException', причина: '-[UITabBarController setSelectedViewController:] можно выбрать только контроллер представления в списке контроллеров представления панели вкладок. Home — это контроллер представления, управляемый панелью uitabbar. - person Sasha Grievus; 27.03.2013