web-dev-qa-db-ja.com

Swift 3のオブジェクトでセレクターを実行

Swift 3.のオブジェクトでセレクターを実行しようとしています

1つのパラメーターを持つセレクターがあります

func imageSelected(aImage : UIImage)

そして私はそれを次のように呼んでいます

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

しかし、セレクターが定義されていないというエラーでアプリがクラッシュします。

14
Zaheer Abbas

それはうまく機能し始め、呼び出されているセレクタを変更しました

から

func imageSelected(aImage : UIImage)

これに

func imageSelected(_ aImage : UIImage)
5
Zaheer Abbas

Swiftでセレクターに遭遇したとき、私がいつもすることは次のとおりです。パラメーターを無視し、名前を使用してください。

これを使用しました:

imageSelected:

それは何ですか :そこにやっている?消して!メソッドの名前を使用するだけです!

また、この素晴らしい#selector構文糖、それを使用してください:

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

これはSwift 4.0

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

関数の前に@objcフラグを追加します

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