0

Краткое описание.изменение tabBarController Index из другого viewController programatically

У меня есть ContainerViewController, что я нажимаю navigationStack.

ContainerViewController имеет 2 ребенка UIViewController. A SlidePanelViewController (выпадающее меню) и CenterViewController (содержание), мой CenterViewController является UITabBarController, который в настоящее время имеет 2 UIViewController.

У меня есть кнопка в моем меню, что мне нужно изменить UIViewController на моем tabBarController. Однако ничего не происходит, когда я вызываю свои функции.

Вот функция, которую я пытаюсь вызвать:

func premiumFormulaTapGesture() { 
    tabBarController?.selectedIndex = 1 
} 

(я также попытался установить его в 0 и 2. Тем не менее без результатов.) Я пытался ставить self. перед ним без каких-либо удачи.

Я также попытался поставить его как функцию в своем ContainerViewController. Но это тоже не сработало.

Вот как я устанавливаю мой UITabBarController:

var centerTabBarController: UITabBarController! 

в ViewDidLoad():

let tabBarController = UITabBarController() 
let suggestionsVC = mySuggestions_VC() 
let testVC = detaiLSuggestion_VC() 
let controllers = [suggestionsVC,testVC] 
tabBarController.setViewControllers(controllers, animated: false) 

centerViewController = tabBarController 
view.addSubview(tabBarController.view) 
addChildViewController(tabBarController) 

мой tabBarController действительно обнаруживается. И я могу вручную коснуться 2 кнопок на нем, где он переключается между viewControllers, как и ожидалось. Позднее я планирую скрыть UITabBarController и использовать меню. UITabBarController будет моим методом изменения UIViewController из меню.

Также уточнить. Я не использую раскадровки.

Любая помощь в изменении viewControllers в моем tabBarController была бы принята с благодарностью!

+2

Когда вы вызываете 'tabBarController ?.selectedIndex = 1', что такое' tabBarController'? (Я вижу, что у вас есть это имя переменной, определенное локально в 'viewDidLoad', но что это значит в' premiumFormulaTapGesture'?) –

+0

Вы совершенно правы. Я создал новый tabBarController под названием menuTabBarController, определил его над классом. И изменил мои функции на menuTabBarController.selectedIndex = 1, и он отлично работал. Огромное спасибо. Если вы хотите пойти дальше и добавить ответ, я соглашусь с ним :) –

ответ

0

Phillip Mills еще не публиковал ответ. Поэтому я просто закрываю открытый вопрос.

Моя проблема заключалась в том, что было 2 UITabBarControllers с именем «tabBarController» после смены имени на «menuTabBarController», все работало нормально.

еще раз благодаря Филлип Миллс для решения моей проблемы в комментариях.

Смежные вопросы