Для доступа к панели вкладок из UiView в Swift - PullRequest
0 голосов
/ 05 февраля 2020

В моем приложении, когда я получаю уведомление, я показываю customView. И если пользователь коснется где-нибудь на экране, вид исчезнет. У меня есть UITabBar с четырьмя вкладками. После получения уведомления, когда я нажимаю на представление, должна быть выбрана 2-я вкладка (я могу быть где угодно в приложении). Но я не могу выбрать вторую вкладку. Всегда открывается первая вкладка. Как мне вызвать «didSelect item» из этого customView? Ниже приведен мой код. Пожалуйста, проверьте его и помогите мне решить мою проблему.

Мой код:

{
    let storyBoard = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "MainTabbarView") as? MainTabbarView
    storyBoard?.selectItem(withIndex: 3)  
} 

В моем UITabBarController я написал следующий код:

func selectItem(withIndex index: Int) {
    if let controller = tabBarController, let tabBar = tabBarController?.tabBar, let items = tabBarController?.tabBar.items {
        guard index < items.count else { return }
        controller.selectedIndex = index
        controller.tabBar(tabBar, didSelect: items[index])
    }
} 

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
    if let items = tabBar.items {
        items.enumerated().forEach { if $1 == item { print("your index is: \($0)") } }
    }
}

1 Ответ

0 голосов
/ 06 февраля 2020

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

activeViewController.tabBarController.selectedIndex = 1

Это должно сделать это.

...