Xcode8 не может подключать несколько/одиночных uibuttons к одному @IBAction в swift файле

Я использую Xcode 8 beta. Я не могу перетащить несколько UIButtons из раскадровки, чтобы подключиться к одному @IBAction в быстром файле. Ошибка? Благодарим за помощь.

Ответы

Ответ 1

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

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

например: - Нормальная кнопка

   @IBAction func huu(sender: UIButton) {

   }

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

 @IBAction func huu(_ sender: UIButton) {

 }

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

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

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

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

Ответ 2

Если вы измените отправителя на AnyObject, в отличие от Any или UIButton, это позволит вам подключить несколько кнопок к одному и тому же действию.

Ответ 3

Когда вы подключаете действие кнопки, по умолчанию метод будет выглядеть так:

@IBAction func s(_ sender: Any) {
    }

Просто измените Любые на UIButton, и вы можете подключить к этому конкретному методу больше действий с кнопками.

Итак, после изменения он должен выглядеть так:

@IBAction func s(_ sender: UIButton) {
    }

Надеюсь, это решит проблему.:)

Ответ 4

Если вы измените "Любой" на "UIButton", он будет работать.

Ответ 5

Если я прав, вам нужно использовать UIGestureRecognizer для присоединения нескольких вещей к одному действию.

Что вы можете сделать - поместите UIGestureRecognizer на каждую кнопку, а затем настройте одну из них, как обычно, с помощью кнопки (ctrl-drag), чем ctrl-перетащить с других распознавателей жестов до первого действия, которое вы сделал.

Ответ 6

Ниже IBAction будет работать только для одной кнопки.

@IBAction func singleButton(sender: Any) {
   // Write your logic
}

Ниже IBAction будет работать с несколькими кнопками.

@IBAction func multipleButton(sender: UIButton) {
   // To find a particular button from an array of buttons
   if sender.tag == 1{
     // Write your logic
   }else if sender.tag == 2{
    // Write your logic
   }

}

Ответ 7

Я предполагаю, что это еще одна проблема: если вы попытаетесь создать IBAction в первый раз, все будет хорошо. Но если по какой-либо причине вы решили повторно подключить IBAction (то же действие к другому объекту или переименовать функцию), тогда он не работает.

Фактически вы создаете IBAction с именем doSomething, который создает функцию func doSomething(sender: UIButton). Но с XCode 8 (или Swift 2.3/3.0) этот метод интерпретируется как func doSomethingWithSender(sender: UIButton).

Я предполагаю, что это ошибка, Apple слишком сильно усложнила "переименование Objc-методов".

Ответ 8

Я изменил отправителя на UIButton из Any

Управление перетащите кнопку на имя функции.

Ответ 9

IN Swift 3 полная версия будет работать.

Просто измените Any на UIButton, и вы можете подключить больше действий кнопки к этому конкретному методу.

Итак, после изменения он должен выглядеть так:

@IBAction func s (_ отправитель: UIButton) {   } Конечно, это решит проблему.:)

Ответ 10

Я много раз пробовал, наконец, получил результат как

Нормальная UIAction

@IBAction func selectBtn(_ sender: Any) {

   }

для нескольких кнопок с одним и тем же методом UIAction, попробуйте метод ниже,

@IBAction func selectBtn(_ sender: UIButton) {

   }

Это сработало для меня. Я изменил тип возврата с "Any" на "UIButton"