2015-08-20 2 views
2

Я программно добавляю некоторые кнопки в свою панель инструментов с помощью быстрого доступа. Я видел, как добавить действие к кнопке, и я думаю, что я делаю это правильно, но, очевидно, я не из-за того, что продолжаю получать «непризнанный селектор, отправленный экземпляру», когда я нажимаю кнопку. Что я делаю не так?Swift - вызов функции при нажатии кнопки - непризнанный селектор, отправленный в экземпляр

Вот как я добавляю кнопки на панели инструментов:

func addButtonsToToolbar(view: UIView?) 
{ 
    let userTrackingArrow = MKUserTrackingBarButtonItem(mapView: self.mapView) 
    let flexSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil) 
    let refresh: UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Refresh, target: view, action: "refreshbuttonTapped:") 

    var items = [UIBarButtonItem]() 
    items.append(userTrackingArrow) 
    items.append(flexSpace) 
    items.append(refresh) 

    self.toolBar.items = items 
} 

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

func refreshbuttonTapped(sender: AnyObject!) 
{ 
    print("Button tapped") 
} 
+0

Где находится функция func refreshbuttonTapped (отправитель: AnyObject!) '? Тот же класс с 'func addButtonsToToolbar (view: UIView?)'? И что такое '(view: UIView?)'? – anhtu

+0

Да, он определен в том же классе, что и addButtonsToToolbar, а view - self.mapView –

+0

Если вы разместите сообщение об ошибке с консоли, это поможет. Как уже упоминалось, он, вероятно, ищет refreshbuttonTapped с неправильным представлением. Вы можете захотеть сам, который будет вашим контроллером. – Jeremiah

ответ

3

Try изменить цель кнопки обновления:

let refresh: UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Refresh, target: view, action: "refreshbuttonTapped:") 

к:

let refresh: UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Refresh, target: self, action: "refreshbuttonTapped:") 
0

Метод refreshbuttonTapped() должен быть реализован в target классе, это view передается в качестве параметра в addButtonsToToolbar()

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

  • Нет связанных вопросов^_^