Как проверить, какая вкладка выбрана из MDCTabBarView в swift

#ios #swift

#iOS #swift

Вопрос:

Я уже настроил MDCTabBarView и MDCTabBarViewDelegate, но когда я нажимаю на один из элементов панели вкладок, делегат не работает и печатает данные. Мой код:

 let tabBarView = MDCTabBarView()
    tabBarView.delegate = self
    tabBarView.items = [
        UITabBarItem(title: "Menu 1", image: nil, tag: 0),
        UITabBarItem(title: "Menu 2", image: nil, tag: 1),
        UITabBarItem(title: "Menu 3", image: nil, tag: 2),
        UITabBarItem(title: "Menu 4", image: nil, tag: 3),
        UITabBarItem(title: "Menu 5", image: nil, tag: 4),
    ]
    tabBarView.selectedItem = tabBarView.items[0]
    tabBarView.barTintColor = .brown
    tabBarView.preferredLayoutStyle = .scrollableCentered
    tabBarView.setTitleColor(.white, for: .normal)
    tabBarView.selectionIndicatorStrokeColor = .white
    view.addSubview(tabBarView)

extension ViewController: MDCTabBarViewDelegate {    
func tabBarView(_ tabBarView: MDCTabBarView, didSelect item: UITabBarItem) {
    print("item: (item)")
    print("item.title: (item.title)")
    if item.tag == 0 {
        print("item tag 0")
    }
    else if item.tag == 1 {
        print("item tag 1")
    }
    else if item.tag == 2 {
        print("item tag 2")
    }
    else if item.tag == 3 {
        print("item tag 3")
    }
    else if item.tag == 4 {
        print("item tag 4")
    }
}
 

}

Когда я нажимаю на один из элементов панели вкладок, он работал и менял вкладку, но не вызывал делегата. Как я могу заставить делегата работать, чтобы я мог распечатать, какая вкладка выбрана пользователем?

Ответ №1:

Для delegate работы MDCTabBarView вам нужно добавить tabBarView.tabBarDelegate = self и удалить shouldSelect shouldBeginMultipleSelectionInteractionAt метод and, потому что это не метод tabBarDelegate , и didSelect метод делегирования будет работать.

Комментарии:

1. Пробовал это и все еще не вызывал делегата

2. не могли бы вы обновить рассматриваемый код, пожалуйста? и вы удалили shouldSelect shouldBeginMultipleSelectionInteractionAt метод and?

3. Хорошо, я уже установил tabBarView.delegate = self и теперь обновил код делегата

4. в вашем коде я не могу видеть tabBarView.tabBarDelegate = self , что нет tabBarView.delegate = self