2016-09-21 3 views
3

Внутри расширения для UIButton, я создаю кнопку и добавляю ее цель.Селектор для другого ViewController

extension UIButton { 
    convenience init(target: AnyObject) { 
     self.init(type: .system) 
     self.addTarget(target, action: Selector("setLang:"), for: .touchUpInside) 
    } 
} 

В ViewController, при использовании пользовательской функции инициализации для создания кнопки, как цель, я прохожу self.
Это работало отлично перед обновлением моего кода в Swift 3. Теперь, однако, я получаю сообщение об ошибке при касании кнопки поговорки:

, истекающее приложение из-за неперехваченное исключение «NSInvalidArgumentException», причина: «- [MyApp. ViewController setLang]: непризнанные селектор направлен например ххх

Внутри ViewController есть следующая функция объявляется, что, как предполагается, будет называться:

func setLang(button: UIButton) { 
    //... 
} 

Любые идеи?
Заранее благодарим!

ответ

0

Обнаружена проблема. Вместо того, чтобы объявить функцию, как я делал раньше, мне нужно сделать это следующим образом:

func setLang(_ button: UIButton) { 
    //... 
} 

Надеется, что это помогает другим выглядывает.

0

// попробуйте, как это, я надеюсь, что это сработает для вас.

self.addTarget(target, action: NSSelectorFromString("setLang:"), for: .touchUpInside) 
0

Я нашел это решение от разработчиков Apple. Это может вам помочь.

selectionButton.addTarget(self, action: #selector(SingleQuestionViewController.selected(_:)), for: .touchUpInside) 
+0

Вы, очевидно, недостаточно внимательно изучили вопрос. Я создал расширение для создания кнопок в удобном виде. Это также означает, что ViewController может и не будет одинаковым. Следовательно, вы не можете использовать ни 'self', ни специальный VC для вызова функции. – LinusGeffarth

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