2015-09-20 1 views
1

Я знаю, что этот вопрос задан много раз. Но я не могу пройти мимо этой ошибки. У меня это работало в предыдущей версии моего приложения с использованием Objective C.«непризнанный селектор отправлен в экземпляр» из UIBarButtonItem

Оба метода ниже находятся в пределах одного и того же UIViewController.

Контроллер представления также хранится в виде ссылки контроллером корневого представления, частью UINavigationController.

func loadEditView(sender: AnyObject, animated: Bool = true) { 
    var editViewController: EditViewController = EditViewController() 
    // set some stuff up 
    self.navigationController!.pushViewController(editViewController, animated: animated) 
} 

override func loadView() { 
    super.loadView() 

    var button = UIBarButtonItem(barButtonSystemItem: .Edit, target: self, action: Selector("loadEditView:")) 
    self.navigationItem.rightBarButtonItem = button 
} 

Сообщение об ошибке

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MyApp.ScaleViewController loadEditView:]: unrecognized selector sent to instance 0x14d643d0' 
+0

Обновите свой вопрос и получите комментируемое и точное сообщение об ошибке. – rmaddy

+0

@maddy - обновленный – Adamski

+0

почему голос? (кто бы ни дал это ..) – Adamski

ответ

2

Вы настроить вашу панель кнопок пункт с селектором loadEditView:. Не то, чтобы имя указывало, что он принимает один параметр.

Однако ваша действительная функция loadEditView принимает два параметра. Отсюда и ошибка.

Вам нужно изменить свой метод loadEditView только для одного параметра - отправителя. Нет способа заставить обработчик кнопки взять второй параметр animated.

+0

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