Zaheer Abbas
Zaheer Abbas

Reputation: 225

Perform Selector With Object in swift 3

I am trying to perform selector with object in swift 3.0

I have a selector which have one parameter

func imageSelected(aImage : UIImage)

and I am calling it like

viewC.perform(Selector.init("imageSelected:"), with: image, afterDelay: 0.1)

But the app crashes with error that the selector is not defined.

Upvotes: 17

Views: 30339

Answers (3)

sonali
sonali

Reputation: 165

This is for swift 4.0

perform(#selector(yourMethodHere), with: nil, afterDelay: 1)

Add @objc flag before your function

@objc public func yourMethodHere(){
     //your code here
}

Upvotes: 7

Zaheer Abbas
Zaheer Abbas

Reputation: 225

It started working well as, I modified the selector being called

from

func imageSelected(aImage : UIImage)

to this

func imageSelected(_ aImage : UIImage)

Upvotes: 5

Sweeper
Sweeper

Reputation: 270790

Here's something I always do when I encounter selectors in swift: Ignore the parameters, just use the name.

You used this:

imageSelected:

What is that : doing there? Delete it! Just use the name of the method!

Also, there is this great #selector syntactic sugar, please use that:

viewC.perform(#selector(imageSelected), with: image, afterDelay: 0.1)

Upvotes: 9

Related Questions