-3
votes

Quel est le problème avec addttarget à Swift 4

erreur dit:

Utilisation de la variable locale 'swtchchange (paramétrage :)' avant sa déclaration

S'il vous plaît, que dois-je changer? xxx


4 commentaires

Montrer ce code dans un contexte.


Non liée à votre problème, mais toutes les noms de variable, de fonctionnement et de paramètres devraient commencer par des lettres minuscules.


Où avez-vous mis exactement le code de addTtarget () ?


Vous n'avez pas besoin @OBJC pour les sélecteurs?


3 Réponses :


0
votes

Utilisation de la variable locale 'swtchchange (paramétrage :)' avant sa déclaration p>

Vous obtenez cette erreur parce que vous avez la méthode incorporée dans un autre procédé après l'appeler ( ViewDidLoad code> probablement) p>

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        ...
        mySwitch.addTarget(self, action: #selector(switchChanged(parameter:)), for: .valueChanged)
    }

    @objc func switchChanged(parameter: UISwitch) {
        if mySwitch.isOn {
            print("Yeah")
        } else {
            print("Nope")
        }
    }

}


0 commentaires

1
votes

Votre problème consiste à déclarer votre fonction dans la même portée où vous essayez d'ajouter votre cible.

Si vous avez déjà réussi à déclarer la fonction à l'intérieur d'une vue ViewDidLoad ou ailleurs, vous devez d'abord déplacer la fonction au niveau de la classe, puis ajouter @OBJC au début de votre fonction FUNC.

supposant que vous Ajoutez votre cible et Déclarez Func de même portée, veuillez modifier votre code comme ci-dessous et déplacer la déclaration de méthode sur la portée extérieure: xxx

Il est préférable de déclarer votre nom de fonction en minuscule Comme mentionné dans les commentaires, j'ai donc édité votre nom de fonction comme swtchChange à partir de swtchchange . Aussi le nom du paramètre mis à jour et utilisé dans la portée de la méthode.


0 commentaires

0
votes

Lorsque vous utilisez des sélecteurs à Swift, vous devez vous assurer que le fonctionnement est marqué avec @OBJC. Essayez ceci: xxx


0 commentaires