Perform Selector With Object in swift 3

2019-04-21 07:47发布

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.

3条回答
该账号已被封号
2楼-- · 2019-04-21 08:02

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
}
查看更多
唯我独甜
3楼-- · 2019-04-21 08:07

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

from

func imageSelected(aImage : UIImage)

to this

func imageSelected(_ aImage : UIImage)
查看更多
啃猪蹄的小仙女
4楼-- · 2019-04-21 08:08

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)
查看更多
登录 后发表回答