Perform Selector With Object in swift 3

26,508

Solution 1

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

from

func imageSelected(aImage : UIImage)

to this

func imageSelected(_ aImage : UIImage)

Solution 2

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)

Solution 3

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
}
Share:
26,508
Zaheer Abbas
Author by

Zaheer Abbas

I am an iOS developer working at a Mobile Apps company in Islamabad, Pakistan.

Updated on July 10, 2020

Comments

  • Zaheer Abbas
    Zaheer Abbas almost 4 years

    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.