web-dev-qa-db-fra.com

Effectuer un sélecteur avec un objet dans Swift 3

J'essaie d'effectuer un sélecteur avec un objet dans Swift 3.0

J'ai un sélecteur qui a un paramètre

func imageSelected(aImage : UIImage)

et je l'appelle comme

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

Mais l'application se bloque avec une erreur que le sélecteur n'est pas défini.

8
Zaheer Abbas

Cela a bien fonctionné car j'ai modifié le sélecteur appelé

de 

func imageSelected(aImage : UIImage)

pour ça 

func imageSelected(_ aImage : UIImage)
5
Zaheer Abbas

Voici quelque chose que je fais toujours lorsque je rencontre des sélecteurs dans Swift: Ignorez les paramètres, utilisez simplement le nom.

Vous avez utilisé ceci:

imageSelected:

Qu'est-ce que : fait là? Supprime-le! Il suffit d'utiliser le nom de la méthode!

En outre, il y a cet excellent sucre #selector syntaxique, veuillez utiliser ceci:

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

Ceci est pour Swift 4.0

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

Ajouter le drapeau @objc avant votre fonction

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