Имя метода изменяется в инспекторе соединений раскадровки

Я создал метод для кнопки, используя Swift 2.3 в Xcode 8, скажем

 @IBAction func testAction(sender: UIButton) {
     print("\(sender.tag)");
 }

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

[TestProject.ViewController testActionWithSender:]: нераспознанный селектор отправлен в экземпляр 0x7ff3f3e050e0

на кнопке нажмите.

Так почему же имя метода меняется в Connections inspector и как мне это исправить?

2 ответа

Решение

Используя этот обходной путь, вы можете добавить существующее действие, а также подключить несколько кнопок к одному действию.

Я думаю, что есть ошибка в Xcode8. Вы можете добавить несколько / одну кнопку к одному действию / функции, изменив sender в _ sender

например:- Обычная кнопка

   @IBAction func huu(sender: UIButton) {

   }

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

 @IBAction func huu(_ sender: UIButton) {

 }

После подключения IBOutlets Xcode отобразит следующее предупреждение:

введите описание изображения здесь

Чтобы удалить это предупреждение, просто удалите _ знак от действия / функции. Убедитесь, что удалить _ после подключения вашего IBOutlets

Надеюсь, что это поможет вам!:)

Я столкнулся с той же проблемой. Единственный обходной путь, который я нашел, - это удалить соединение и перетащить действие кнопки в новый метод Action.

Если вы связываете свою кнопку с существующей, она падает

Другие вопросы по тегам