Подключить UIB для закрытия? (Свифт, цель-действие)

Я хочу подключить UIButton к куску кода - из того, что я нашел, предпочтительным способом сделать это в Swift по-прежнему является использованиеaddTarget(target: AnyObject?, action: Selector, forControlEvents: UIControlEvents) функция. Это используетSelector предположительно, для обратной совместимости с библиотеками Obj-C. Я думаю, что понимаю причину@selector в Obj-C - возможность ссылаться на метод, поскольку в Obj-C методы не являются первоклассными значениями.

Однако в Swift функции являются первоклассными значениями. Есть ли способ подключить UIButton к замыканию, что-то похожее на это:

// -- Some code here that sets up an object X

let buttonForObjectX = UIButton() 

// -- configure properties here of the button in regards to object
// -- for example title

buttonForObjectX.addAction(action: {() in 

  // this button is bound to object X, so do stuff relevant to X

}, forControlEvents: UIControlEvents.TouchUpOutside)

Насколько мне известно, вышесказанное в настоящее время невозможно. Учитывая, что Swift, похоже, стремится быть достаточно функциональным, почему это так? Два варианта могут явно сосуществовать для обратной совместимости. Почему это не работает больше как onClick () в JS? Кажется, чтотолько способ подключить UIButton к паре целевое действие - использовать то, что существует исключительно по причинам обратной совместимости (Selector).

Мой вариант использования - создать UIB-кнопки в цикле для разных объектов, а затем подключить каждый к замыканию. (Установка тега / поиск в словаре / подкласс UIButton - грязные полу-решения, но меня интересует, как сделать это функционально, то есть этот подход закрытия)

Ответы на вопрос(8)

Ваш ответ на вопрос