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
ボタンをviewController
に添付し、ctrl-dragを使用してアクション(IBAction
)を作成すると、このように見えるメソッドをSwift(引数がない場合):
_@IBAction func buttonAction() {}
_
Objective-Cでは、同じことが次のようになります。
_- (IBAction)buttonAction {}
_
つまり、@IBAction func OK(sender: UIButton){}
はアクションメソッドです。
送信者の引数について知りたい場合は、 this SO postをお勧めします。
あなたがやりたいことのために、私はIBOutlet
とIBAction
を作成します。こうすることで、アウトレット変数でその属性を変更し、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がリリースされると、println
はprint
に変更されます。また、アクションとアウトレットでは、簡単にするために、それらに異なる名前を付けることをお勧めします2つを区別するには、次のようにします。
_@IBOutlet var okOutlet: UIButton!
@IBAction func okAction(sender: UIButton){}
_
それに加えて、変数、定数、関数などに名前を付けるときは、キャメルケースを使用する必要があります。
ここにあなたが従うことができるステップがあります-
ために @IBOutlet
1.クラス名の直後にInterface Builder Elementプロパティを宣言する
class SomeViewController: UIViewController{
@IBOutlet weak var aTextField : UITextField! ////Your Interface builder Element
2.ストーリーボードからIB要素をフックします。
ために @IBAction
1.クラス内にメソッドを記述します(SomeViewController
など)
@IBAction func anAction(_sender : AnyObject){
}
2.ストーリーボードからメソッドをフックします。
お役に立てば幸いです。