#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