Coincé avec l'ajout de la cible à bouton swift 3 par programmation
J'ai créé un UIButton l'utilisation de Swift 3 et je veux qu'il à l'impression d'un message lorsqu'il est pressé.
J'ai donc fait quelque chose comme ceci:
Dans loadView()
button.addTarget(self, action: #selector(ViewController.pressButton(button:)), for: .touchUpInside)
Une méthode:
func pressButton(button: UIButton) {
NSLog("pressed!")
}
Mais rien ne se passe lorsque je clique sur le bouton.
Avez-vous la solution?
On dirait que tu es l'appel de la fonction qui est dans ViewController, mais votre objectif est auto. si vous essayez de le faire à partir d'un autre ViewController, l'auto aura besoin d'être ViewController.
On dirait que tu es l'appel de la fonction qui est dans ViewController, mais votre objectif est auto. si vous essayez de le faire à partir d'un autre ViewController, l'auto aura besoin d'être ViewController.
OriginalL'auteur user234159 | 2016-10-02
Vous devez vous connecter pour publier un commentaire.
Ajouter le bouton de code dans votre
viewDidLoad
et il va travailler pour vous:Vous n'avez pas besoin d'ajouter
ViewController.pressButton
àselector
, son assez avec lefunction name
.Swift 4.x version:
OriginalL'auteur Rashwan L
essayer dans la Swift3!
OriginalL'auteur Otis Lee
Utiliser le code suivant.
Votre nom de classe correspond à FirstViewController
Et votre sélecteur correspond à la fonction suivante
OriginalL'auteur arango_86
Dans swift 3 utilisez ce -
Par exemple(à partir de mon code) -
Juste donner un
:
après le nom de la méthode si vous voulez l'expéditeur en tant que paramètre.OriginalL'auteur Nikhil Manapure
Vous mentionner que le
addTarget
appel est enloadView()
. Est-ce dans votre personnalisé sous-vue, d'une certaine sorte, ou le viewController?À partir de votre sélection, c'est le ciblage d'une méthode dans votre
ViewController
classe, mais si letarget
de cette action est la vue elle-même, alors il serait judicieux que l'action ne va pas à travers.Si vous déclarez votre bouton dans un viewController, et dans
viewDidLoad
ajouter cette cible comme ci-dessus, le message doit être imprimé comme vous êtes à la recherche pour. Je crois que vous êtes "cibler" la mauvaise classe avec votre action.Alors que les appels
loadView()
? Ce n'est pas un standard-vue-contrôleur de cycle de vie de la méthode. C'est une vue standard du cycle de vie de la méthode.Tout le code est dans une vue contrôleur nommé "ViewController". Est-il une différence entre un appel addTarget dans loadView() et viewDidLoad()?
oui, dans une vue-contrôleur, vous aurez besoin de le faire dans le viewDidLoad()
Donc j'ai coupé et collé addTarget() dans le viewDidLoad(). Rien ne se passe encore.
OriginalL'auteur BHendricks
OriginalL'auteur Divya Rayapati
override func viewDidLoad()
méthodeAssurez-vous que votre action gestionnaire taggés avec @IBAction comme ceci:
@IBAction func pressButton(bouton: UIButton) {
print("pressé!")
}
Ensuite, il sera!
OriginalL'auteur SpkingR