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"