erreur dit:
Utilisation de la variable locale 'swtchchange (paramétrage :)' avant sa déclaration p> blockQuote>
S'il vous plaît, que dois-je changer? p>
xxx pré> p>
3 Réponses :
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") } } }
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. P>
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: p> 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 code> à partir de swtchchange code>. Aussi le nom du paramètre mis à jour et utilisé dans la portée de la méthode. P> p>
Lorsque vous utilisez des sélecteurs à Swift, vous devez vous assurer que le fonctionnement est marqué avec @OBJC. Essayez ceci:
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 () code>?Vous n'avez pas besoin
@OBJC code> pour les sélecteurs?