Swift - Извикване на функция при натискане на бутон - неразпознат селектор, изпратен до инстанция

Добавям програмно някои бутони към моята лента с инструменти с помощта на 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
}

Това е функцията, която искам да се извика с натиснат бутон "refresh", но не се извиква. Вместо това получавам „неразпознат селектор, изпратен до инстанция“.

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

person Arthur Garza    schedule 20.08.2015    source източник
comment
Къде е func refreshbuttonTapped(sender: AnyObject!)? Същият клас с func addButtonsToToolbar(view: UIView?)? И какво е (view: UIView?)?   -  person tuledev    schedule 20.08.2015
comment
Да, дефиниран е в същия клас като addButtonsToToolbar и изгледът е self.mapView   -  person Arthur Garza    schedule 20.08.2015
comment
Ако публикувате грешката от конзолата, ще помогне. Както споменахме, вероятно търси бутон за опресняване, докоснат в грешен изглед. Може да искате self, който ще бъде вашият контролер на изгледа.   -  person Jeremiah    schedule 20.08.2015


Отговори (2)


Опитайте да промените целта на бутона за опресняване:

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

to:

let refresh: UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Refresh, target: self, action: "refreshbuttonTapped:")
person tuledev    schedule 20.08.2015

Методът refreshbuttonTapped() трябва да бъде имплементиран в класа target, това е view, предаден като параметър в addButtonsToToolbar()

person vadian    schedule 20.08.2015