web-dev-qa-db-fra.com

Comment utilisez-vous le générateur d'interface avec Swift?

Lorsque vous accrochez Swift code à un Storyboard, comment ajoutez-vous les balises IBAction et IBOutlet?

14
Jason Moore

Ajoutez les attributs IBAction et IBOutlet aux variables et aux fonctions afin qu'ils soient visibles dans le générateur d'interface.

class ViewController: UIViewController {

    @IBOutlet var label: UILabel?

    @IBAction func doTap(x:UIButton) {
        println("Tapped: \(x)")
    }
}
31
Jason Moore

Le code ci-dessous montre le format IBOutlet et IBAction en Swift:

class MyViewController: UIViewController {

  @IBOutlet weak var btnSomeButton: UIButton?
  @IBOutlet weak var lblLabelItem: UILabel?

  @IBAction func btnSomeButtonClicked(sender: UIButton) {
    ...
  }
}

Vous pouvez les lier de la même manière que dans Objective-C.

4
Jayprakash Dubey

Je serais plus d'accord avec Jayprakash que la première réponse votée. La seule chose que je corrigerais est le marquage des IBOutlets comme implicitement déballé avec le ! La première réponse était correcte, mais plusieurs modifications ont été apportées dans Swift et comment il interagit avec IB dans la dernière version. Dans Swift, les IBOutlets n'ont plus de comportement implicite ou magique- -ils sont simplement des annotations pour IB. À la date de cette réponse, le code suivant est correct:

// How to specify an the equivalent of IBOutletCollection in Swift
@IBOutlet var fields: [UITextField]!
// How to specify a standard IBOutlet
@IBOutlet weak var button: UIButton!
// How to specify an IBAction
@IBAction func buttonWasPressed(sender: UIButton) { ... } 
3
Adrian Rodriguez

Utilisez simplement l'ancienne technique ctrl + glisser qui était populaire dans Xcode5 et tout fonctionne bien.

3
user2039101

Lors de la création d'un projet, vous devez avoir sélectionné le storyboard, afin de pouvoir ajouter vos IBOutlet directement dans le story-board.

Le code ci-dessous vous donne une idée de la façon d'ajouter IBOutlet au UILabel

class ViewController: UIViewController {

    @IBOutlet var label : UILabel

}
1
Shaki