2016-11-04 2 views
1

В преобразовании из Swift 2.3 до 3 Swift, получаю ошибку выше для следующей строки кода:Ноль не совместим с ожидаемым типом аргумента Selector

var contactButton: UIBarButtonItem {return self.CustomRightItem("icon-nav-nls-contact", target: self, action: nil)} 

Проблема заключается в nil действия. Я пробовал использовать и пустую селектор: #selector() и `` `#selector (nil) как безрезультатно.

Как я могу обработать действие nil в Swift 3?

+0

CustomRightItem выглядит как ваш собственный метод экземпляра, который создает UIBarButtonItem. Возможно, вам нужно переписать свою функцию, чтобы вместо «селектора» выбрать «Селектор?» (Необязательный селектор)? Или, как вы показываете в своем собственном ответе, переходите к фактическому селектору. –

+0

Похоже, что инициализаторы Swift для UIBarButtonItem используют необязательный селектор, поэтому необходимо изменить вашу функцию для выбора «Selector?». –

ответ

0

Это явно заполнитель кода для последующего действия, поэтому используйте функцию заполнителя, где код будет в конечном итоге пойти и затем вызвать этот селектор в соответствии с требованиями с: #selector(functionName(_:))

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

var contactButton: UIBarButtonItem {return self.CustomRightItem("icon-nav-nls-contact", target: self, action: #selector(contactAction(_:)))} 

func contactAction(_ sender: AnyObject) { 
    return 
} 
Смежные вопросы