web-dev-qa-db-fra.com

IBOutlet et IBAction à Swift

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
7
linux-user

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.

Modifier:

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.

Quelques points à noter:

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. 

11
Caleb Kleveter

Une façon de le faire consiste à faire glisser le contrôle de votre bouton vers votre contrôleur de vue et à choisir l'action: enter image description here

Si vous avez connecté l'action de votre bouton, votre code devrait fonctionner correctement.

7
Prontto

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.

 enter image description here

Pour @IBAction

1.Write Une méthode dans votre classe (disons SomeViewController)

@IBAction func anAction(_sender : AnyObject){


}

2.Hook la méthode de Storyboard.

 enter image description here

J'espère que ça peut aider.

3

Vous pouvez simplement ajouter une action à partir de votre storyboard. Voir l'image.  Image

2
ridvankucuk