7
votes

SWIFT - Déterminez quel bouton a été enfoncé avec le commutateur

J'ai 4 boutons qui appellent une seule fonction. Selon le bouton enfoncé, j'ai besoin de masquer le bouton à l'intérieur de la fonction appelée après avoir appuyé sur la touche. Ceci xxx

mais ce compilateur de travail ne dit pas sur l'utilisation d'un identifiant non résolu 'Sender'

Comment faire correctement?

EDIT:

fonction entière xxx

Autre cas .. }


8 commentaires

Comment faites-vous pour appeler la fonction des 4 boutons?


Veuillez afficher toute votre fonction où vous avez mis ce code.


@Er. Kukadiya Updatet Post


@Poql Une fois le bouton enfoncé, je vérifie si le titre est égal à la variable A. Si non, je appelle la fonction à l'intérieur desquelles je vérifie si une autre variable B est vraie ou false et si cela a besoin de masquer le bouton qui a été enfoncé.


@Poql a également mis à jour la question avec une fonction entière


Je ne l'ai pas vraiment. Mais vous devez utiliser AddTtarget: de vos uibuttons pour spécifier quelle fonction à appeler. Ensuite, utilisez des balises pour savoir quel bouton appelé la fonction.


Pourquoi vous voulez toujours utiliser des balises pour déterminer l'UIBUTTON? Si la fonction appelée a un paramètre d'expéditeur, que vous connaissez l'UIBUTTON qui a appelé la fonction via ce paramètre


@ Julianm: Votre commentaire est la solution. Vous devriez le poster comme une réponse.


5 Réponses :


4
votes

Mettez votre code comme ci-dessous comme je l'ai montré: xxx

-> en raison de ce que vous obtiendrez facilement la propriété de l'expéditeur.

-> Vérifiez également que Vous n'avez pas oublié de donner des étiquettes aux uibuttons.


0 commentaires

10
votes

Pourquoi vous voulez toujours utiliser des balises pour déterminer l'UIBUTTON? Si la fonction appelée a un paramètre d'expéditeur, vous connaissez l'UIBUTTON qui a appelé la fonction via ce paramètre.

func buttonClicked(sender: UIButton)
{
   switch sender {
   case button1: // Do something
   case button2: // Do some other stuff
   ...
   default: ()
   }

}


1 commentaires

Je ne suis pas sûr que cela puisse résoudre le problème à cause du message d'erreur qu'il a eu. Mais merci. J'ai appris quelque chose.



11
votes

Essayez ceci,

1) Attribuez une étiquette pour chaque bouton xxx

2), vérifiez votre action de bouton commune xxx


0 commentaires

0
votes

plutôt qu'à l'aide d'une instruction de commutation, vous pouvez simplement utiliser l'expéditeur directement.

Notez que vous devez spécifier que l'expéditeur est un UIBUTTON (cela ne fonctionnera donc que si la fonction est uniquement appelée à partir d'un bouton). < / p> xxx

Ceci réduit le code et vous permet également d'ajouter des boutons supplémentaires sans modifications de code.


0 commentaires

1
votes

Je sais que cela a été répondu, mais si vous l'avez configuré dans IB, je vous recommanderais que vous vous recommanderais de vérifier si le bouton a été enfoncé à l'aide des variables @iboutlet comme cas.

class SomeView: UIView {
    @IBOutlet weak var buttonA: UIButton!
    @IBOutlet weak var buttonB: UIButton!
    @IBOutlet weak var buttonC: UIButton!

    @IBAction func didHitButton(_ sender: UIButton) {
        switch sender {
        case buttonA:
            doThis()
        }
        case buttonB:
            doThat()
        }
        case buttonC:
            doThisAgain()
        }
        default:
            doNothing()
        }
    }
    ...
}


0 commentaires