web-dev-qa-db-ja.com

SwiftのIBOutletおよびIBAction

IBOutletおよびIBActionをボタン変数にInterface BuilderからView Controllerに接続しました。 Swiftのボタンにアクションメソッドを追加するにはどうすればよいですか?このコードは機能していないようです。

@IBOutlet var OK: UIButton!
@IBAction func OK(sender: UIButton){}

私が見つけたObjective-Cの同等のものは次のとおりです:

@interface Controller
{
    IBOutlet id textField; // links to TextField UI object
}

- (IBAction)doAction:(id)sender; // e.g. called when button pushed
10
linux-user

ボタンをviewControllerに添付し、ctrl-dragを使用してアクション(IBAction)を作成すると、このように見えるメソッドをSwift(引数がない場合):

_@IBAction func buttonAction() {}
_

Objective-Cでは、同じことが次のようになります。

_- (IBAction)buttonAction {}
_

つまり、@IBAction func OK(sender: UIButton){}はアクションメソッドです。

送信者の引数について知りたい場合は、 this SO postをお勧めします。

編集:

あなたがやりたいことのために、私はIBOutletIBActionを作成します。こうすることで、アウトレット変数でその属性を変更し、IBAction、上記のように:

_@IBOutlet var OK: UIButton!
@IBAction func OK(sender: UIButton){} 
_

たとえば、ボタンを非表示にする場合は、このコードをviewDidLoadに入れます。

_OK.hidden = true
_

そのコードのOKはアウトレット変数用です。ボタンが押されたときに「あなたが私を押した」をコンソールに出力したい場合は、次のコードを使用します。

_@IBAction func OK(sender: UIButton){
  println("You pressed me")
}
_

上記では、「あなたが私を押した」というアクションをコンソールに出力しています。

注意すべきいくつかの点:

Swift 2.0がリリースされると、printlnprintに変更されます。また、アクションとアウトレットでは、簡単にするために、それらに異なる名前を付けることをお勧めします2つを区別するには、次のようにします。

_@IBOutlet var okOutlet: UIButton!
@IBAction func okAction(sender: UIButton){} 
_

それに加えて、変数、定数、関数などに名前を付けるときは、キャメルケースを使用する必要があります。

12
Caleb Kleveter

これを行う1つの方法は、ボタンからコントロールドラッグしてビューコントローラーにドラッグし、アクションを選択することです enter image description here

ボタンのアクションを接続している場合、コードは問題なく機能するはずです。

7
Prontto

ここにあなたが従うことができるステップがあります-

ために @IBOutlet

1.クラス名の直後にInterface Builder Elementプロパティを宣言する

class SomeViewController: UIViewController{

    @IBOutlet weak var aTextField : UITextField! ////Your Interface builder Element

2.ストーリーボードからIB要素をフックします。

enter image description here

ために @IBAction

1.クラス内にメソッドを記述します(SomeViewControllerなど)

@IBAction func anAction(_sender : AnyObject){


}

2.ストーリーボードからメソッドをフックします。

enter image description here

お役に立てば幸いです。

ストーリーボードからアクションを追加するだけです。画像を参照してください。 Image

2
ridvankucuk