IBAction не вызывается в проекте Ma c Catalyst - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть несколько кнопок панели инструментов в XIB-файле Interface Builder, но нажатие на них не вызывает соответствующих им методов IBAction в моем контроллере представления.

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

self.saveButton.title = @"foo";

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

- (IBAction)save:(UIButton *)sender;

... и я вижу соединение в Инспекторе соединений в Интерфейсном Разработчике. У меня есть другие кнопки, которые работают нормально, и я не вижу, что в этом особенного.

1 Ответ

1 голос
/ 28 февраля 2020

У меня был неправильный тип для аргумента отправителя в методе IBAction. У меня как-то было это:

- (IBAction)save:(UIButton *)sender;

Но так как элемент кнопки панели вызова вызывает это, оно должно быть:

- (IBAction)save:(UIBarButtonItem *)sender;

После обновления кода мне пришлось отсоединить и заново связать кнопку в Интерфейсном Разработчике. Тогда это сработало!

Я годами использую этот код на iOS без проблем, но, очевидно, платформа Ma c Catalyst менее допустима для такой ошибки.

Я еще не видел много сообщений о Ma c Catalyst, поэтому, надеюсь, это поможет кому-то в такой же ситуации.

...