J'ai connecté IBOutlet
et IBAction
à ma variable de bouton à partir d'Interface Builder à View Controller. Comment ajouter une méthode d'action au bouton dans Swift? Ce code ne semble pas fonctionner.
@IBOutlet var OK: UIButton!
@IBAction func OK(sender: UIButton){}
L'équivalent d'Objective-C que j'ai trouvé est:
@interface Controller
{
IBOutlet id textField; // links to TextField UI object
}
- (IBAction)doAction:(id)sender; // e.g. called when button pushed
Lorsque vous attachez un bouton à la viewController
et créez une action (IBAction
) à l'aide de la touche Ctrl-glisser, vous créez une méthode (également appelée fonction) qui ressemble à ceci dans Swift (si elle n'a pas d'argument):
@IBAction func buttonAction() {}
En Objective-C, la même chose ressemblera à ceci:
- (IBAction)buttonAction {}
Cela signifie donc que @IBAction func OK(sender: UIButton){}
est une méthode d'action.
Si vous voulez connaître l'argument de l'expéditeur, je recommanderais this SO post.
Pour ce que vous voulez faire, je crée une IBOutlet
et une IBAction
. Ainsi, je peux modifier ses attributs avec la variable sortie et avoir le côté action de la chose avec la IBAction
, comme ce que vous montrez ci-dessus:
@IBOutlet var OK: UIButton!
@IBAction func OK(sender: UIButton){}
Par exemple, si je veux cacher le bouton, je mettrais ce code dans la viewDidLoad
OK.hidden = true
OK dans ce code concerne la variable de sortie. Si je voulais imprimer "Vous m'avez appuyé" sur la console lorsque vous appuyez sur le bouton, j'utiliserais ce code:
@IBAction func OK(sender: UIButton){
println("You pressed me")
}
Ci-dessus, j'utilise l'action pour imprimer "Tu m'as appuyé" sur la console.
Lorsque Swift 2.0 sera publié, println
deviendra print
. Aussi, avec votre action et votre sortie, je suggérerais de leur donner des noms différents, afin de faciliter la différenciation des deux, quelque chose comme ceci:
@IBOutlet var okOutlet: UIButton!
@IBAction func okAction(sender: UIButton){}
Parallèlement à cela, vous devez utiliser la casse des chameaux lorsque vous nommez des variables, des constantes, des fonctions, etc.
Voici les étapes que vous pouvez suivre
Pour @IBOutlet
1.Déclarez votre propriété d'élément de générateur d'interface juste après le nom de la classe
class SomeViewController: UIViewController{
@IBOutlet weak var aTextField : UITextField! ////Your Interface builder Element
2. Accrochez l’élément IB du Storyboard.
Pour @IBAction
1.Write Une méthode dans votre classe (disons SomeViewController
)
@IBAction func anAction(_sender : AnyObject){
}
2.Hook la méthode de Storyboard.
J'espère que ça peut aider.