2016-06-15 2 views

ответ

1

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

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

+0

Благодарим за быстрый ответ. Я считаю, что это сработает. Однако в предыдущей версии XCode вы можете просто перетаскивать несколько кнопок непосредственно на один IBAction. С бета-кодом xcode я больше не могу этого делать. В итоге я просто подключил его через инспектор соединений. –

0

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

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

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

+0

Вы нашли решение для этого? –

+0

Нет, это, очевидно, проблема в Xcode. Либо Apple исправляет это, либо конвертирует ваш код в Swift 3. –

18

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

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

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

@IBAction func huu(sender: UIButton) { 

    } 

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

@IBAction func huu(_ sender: UIButton) { 

} 

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

enter image description here

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

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

+1

Это отличный ответ и работает с версией Xcode 8. Спасибо! Другая идея - полностью удалить аргумент. –

+1

@ Chathuranga Silva - Это сработало для меня, спасибо. @ Daniel T, который тоже работал, спасибо. –

+1

Это работает ... Меня огорчает то, что мы собираемся на такой длине использовать стабильную версию Xcode в наши дни ... – Kirualex

13

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

+0

Это работает. Я перехожу к 'AnyObject', и он работает. По-видимому, это ошибка в Xcode 8.2.1. – AechoLiu

10

При подключении кнопки действия, по умолчанию метод выглядит следующим образом:

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

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

Таким образом, после изменения он должен выглядеть следующим образом:

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

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

+1

вот путь ... работал на меня w xcode 8.2.1 и NSButton ... – hlv

+1

Это работало как шарм !! –

+1

Это сделало это для меня тоже! – toddg

0

Я изменил отправителя UIButton из любого

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

0

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

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

Таким образом, после изменения он должен выглядеть следующим образом:

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

4

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

0

Я много раз пытался, наконец, я получил результат, как,

Нормальной UIAction

@IBAction func selectBtn(_ sender: Any) { 

    } 

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

@IBAction func selectBtn(_ sender: UIButton) { 

    } 

Это сработало для меня. Я изменил тип возврата с «Любые» на «UIButton»

1

Ниже 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 
    } 

} 
Смежные вопросы