Я попытался реализовать UITabBar
, и теперь я не могу получить обратный вызов из метода при выборе элемента. Есть ли возможность просто создать @IBAction func
поэтому? Или мне нужно сделать что-то еще?
Swift UITabBarItem как UIButton
comment
возможный дубликат Получить обратный вызов/ выполнять некоторый код при нажатии на вкладку на панели вкладок
- person nhgrif   schedule 17.08.2015
Ответы (3)
Чтобы реализовать кнопку UITabBar, ваш контроллер представления должен соответствовать протоколу UITabBarDelegate. Вам необходимо реализовать:
Быстрый:
func tabBar(_ tabBar: UITabBar, didSelectItem item: UITabBarItem!)
Цель-с:
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
Вам также необходимо установить делегата (tabBar.delegate = self) в viewDidLoad вашего ViewController.
Изменить: ответ Swift 3:
func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
}
person
Floris M
schedule
17.08.2015
Ваш контроллер представления должен соответствовать UITabBarDelegate
и реализовывать:
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item;
Этот метод вызывается, когда пользователь выбирает вкладку (например, UITabBarItem
).
person
Adam Waite
schedule
17.08.2015
Должен ли я вызывать этот метод явно в коде или когда я реализую его в UITabBarDelegate, он будет вызываться автоматически?
- person Luca Archidiacono; 17.08.2015
UITabBar отправит это сообщение своему делегату, когда пользователь выберет вкладку.
- person Adam Waite; 17.08.2015
class MyClass: UITabBarItem, UITabBarDelegate {
class MyClass: UITabBar, UITabBarControllerDelegate, UITabBarDelegate {
Какие из этих реализаций верны? Также правильно ли это кодирование: func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
К вашему сведению, я отключил класс по умолчанию и подключился к новому пользовательскому классу, и он все еще не работает (в main.storyboard
).
- person Luca Archidiacono; 17.08.2015
Почему вы создаете подкласс UITabBarItem?
- person Adam Waite; 17.08.2015
Элемент панели вкладок не должен быть делегатом панели вкладок, на которой он находится. Вероятно, вы записываете себя в цикл сохранения.
- person nhgrif; 17.08.2015
@AdamWaite Я только начал программировать swift 1 или 2 недели назад, поэтому я не знал, что у меня есть подклассы. Как я могу это исправить?
- person Luca Archidiacono; 17.08.2015
@nhgrif что ты имеешь в виду? как мне поступить иначе? Оставить класс по умолчанию? - Я не понял это ясно
- person Luca Archidiacono; 17.08.2015
Я думаю, вам нужно получить книгу и изучить основы, прежде чем что-либо еще.
- person Adam Waite; 17.08.2015
Я наконец решил проблему. У меня были некоторые проблемы с классом делегатора и обычным классом. Это исправило мою проблему: tabBar.delegate = self
в классе Main-Controller
person
Luca Archidiacono
schedule
17.08.2015