web-dev-qa-db-ja.com

SwiftでInterface Builderをどのように使用しますか?

Swiftコードをストーリーボードにフックする場合、IBActionおよびIBOutletタグをどのように追加しますか?

14
Jason Moore

IBActionおよびIBOutlet属性を変数および関数に追加して、それらをInterface Builderで表示できるようにします。

class ViewController: UIViewController {

    @IBOutlet var label: UILabel?

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

以下のコードは、SwiftでのIBOutletおよびIBAction形式を示しています。

class MyViewController: UIViewController {

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

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

Objective-Cと同じ方法でバインドできます。

4

私は Jayprakash に賛成するのは、賛成された最初の答えよりもそうです。私が修正する唯一のことは、暗黙的に!でアンラップされたIBOutletsのマークです。以前は正解でしたが、Swiftにいくつかの変更が加えられ、最新のIBとどのように相互作用するかリリース。 Swiftでは、IBOutletに暗黙の動作や魔法はなくなりました。これらは単にIBの注釈です。この応答の日付の時点で、次のコードは正しいです:

// 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

Xcode5で一般的だった古いctrl +ドラッグテクニックを使用するだけで、すべてが正常に動作します。

3
user2039101

プロジェクトを作成するときは、ストーリーボードを選択しておく必要があります。これにより、IBOutletをストーリーボードに直接追加できます。

以下のコードは、IBOutletUILabelに追加する方法を示しています。

class ViewController: UIViewController {

    @IBOutlet var label : UILabel

}
1
Shaki