Swift UITabBarItem как UIButton

Я попытался реализовать UITabBar, и теперь я не могу получить обратный вызов из метода при выборе элемента. Есть ли возможность просто создать @IBAction func поэтому? Или мне нужно сделать что-то еще?


person Luca Archidiacono    schedule 17.08.2015    source источник


Ответы (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
comment
Должен ли я вызывать этот метод явно в коде или когда я реализую его в UITabBarDelegate, он будет вызываться автоматически? - person Luca Archidiacono; 17.08.2015
comment
UITabBar отправит это сообщение своему делегату, когда пользователь выберет вкладку. - person Adam Waite; 17.08.2015
comment
class MyClass: UITabBarItem, UITabBarDelegate { class MyClass: UITabBar, UITabBarControllerDelegate, UITabBarDelegate { Какие из этих реализаций верны? Также правильно ли это кодирование: func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) { К вашему сведению, я отключил класс по умолчанию и подключился к новому пользовательскому классу, и он все еще не работает (в main.storyboard). - person Luca Archidiacono; 17.08.2015
comment
Почему вы создаете подкласс UITabBarItem? - person Adam Waite; 17.08.2015
comment
Элемент панели вкладок не должен быть делегатом панели вкладок, на которой он находится. Вероятно, вы записываете себя в цикл сохранения. - person nhgrif; 17.08.2015
comment
@AdamWaite Я только начал программировать swift 1 или 2 недели назад, поэтому я не знал, что у меня есть подклассы. Как я могу это исправить? - person Luca Archidiacono; 17.08.2015
comment
@nhgrif что ты имеешь в виду? как мне поступить иначе? Оставить класс по умолчанию? - Я не понял это ясно - person Luca Archidiacono; 17.08.2015
comment
Я думаю, вам нужно получить книгу и изучить основы, прежде чем что-либо еще. - person Adam Waite; 17.08.2015

Я наконец решил проблему. У меня были некоторые проблемы с классом делегатора и обычным классом. Это исправило мою проблему: tabBar.delegate = self в классе Main-Controller

person Luca Archidiacono    schedule 17.08.2015