ための関数を作成します私はボタンの明示的な機能も宣言していません。私はボタンタグを使用することができますが、代わりにこれを行うことをお勧めします。スウィフトは、プログラムで使用すると、このようなボタンの機能を作成することができスウィフトでは、ボタン
答えて
はこれを行うには、独自のUIButton
サブクラスを作成します。
また、ストーリーボードにUIButton
秒でこれを使用する(だけMyButton
に自分のクラスを変更)してからviewDidLoad
でwhenButtonIsClicked
を呼び出すことができます。
@IBOutlet weak var theButton: MyButton!
override func viewDidLoad() {
super.viewDidLoad()
theButton.whenButtonIsClicked { print("Hello World") }
}
Objective-Cの動的機能を使用したり、独自のタッチハンドラなどを追加したりする必要がない場合は、これをSwiftで行うだけですが、残念ながらこれはできません。
Swiftで#selector
が表示されると、コンパイラはobjc_MsgSend
をフードの下で呼び出しています。 SwiftはObjective-Cの動機づけをサポートしていません。このセレクタをブロックで使い分けるためには、黒い魔法を使って動作させる必要があり、Objective-Cの構造を使ってそれを行う。
"yucky dynamic Objective-C stuff"についての苦労がなければ、おそらくUIButton
に拡張を定義し、関連付けられたオブジェクトを使ってオブジェクトに動的に関数を関連付けることができます。私はここで中止するつもりですが、もっと読むためにNSHipsterには、関連オブジェクトにはoverviewという偉大なものがあります。あなたがプログラムでボタンを作成し、その機能を設定するためにwhenButtonIsClicked
を呼び出したときUIButton
ためMyButton
class MyButton: UIButton {
var action: (()->())?
func whenButtonIsClicked(action:()->()) {
self.action = action
self.addTarget(self, action: #selector(MyButton.clicked), forControlEvents: .TouchUpInside)
}
func clicked() {
action?()
}
}
代替:
私はObjective-Cを本当に使いたくありません。幸いなことに、IOSの「スタイル」をより有効に活用した優れたソリューションがあることが判明しました。 – Roymunson
また、単にUIView
をサブクラス化し、vacawamaなどの閉鎖が持つある性質を持つことができます。
var action:() ->()?
次に、touchesBegan
メソッドをオーバーライドして、ボタンに触れるたびにこの関数を呼び出します。このアプローチでは、UIBittonで始めることのすべての利点を得ることはできません。
let bt1 = UIButton(type: UIButtonType.InfoDark)
bt1.frame = CGRectMake(130, 80, 40, 40)
let bt2 = UIButton(type: UIButtonType.RoundedRect)
bt2.frame = CGRectMake(80, 180, 150, 44)
bt2.backgroundColor = UIColor.purpleColor()
bt2.tintColor = UIColor.yellowColor()
bt2.setTitle("Tap Me", forState: UIControlState.Normal)
bt2.addTarget(self, action: "buttonTap", forControlEvents: UIControlEvents.TouchUpInside)
let bt3 = UIButton(type: UIButtonType.RoundedRect)
bt3.backgroundColor = UIColor.brownColor()
bt3.tintColor = UIColor.redColor()
bt3.setTitle("Tap Me", forState: UIControlState.Normal)
bt3.frame = CGRectMake(80, 280, 150, 44)
bt3.layer.masksToBounds = true
bt3.layer.cornerRadius = 10
bt3.layer.borderColor = UIColor.lightGrayColor().CGColor
self.view.addSubview(bt1)
self.view.addSubview(bt2)
self.view.addSubview(bt3)
}
func buttonTap(button:UIButton)
{
let alert = UIAlertController(title: "Information", message: "UIButton Event", preferredStyle: UIAlertControllerStyle.Alert)
let OKAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil)
alert.addAction(OKAction)
}
あなたの答えにいくつかの説明を追加してください。 – HaveNoDisplayName
- 1. 異なるクラスのスウィフトでプログラムでボタンを作成する
- 2. スウィフト3:戻るボタンを隠すことができません
- 3. スウィフトで編集可能なボタン/ラベルを作成する方法
- 4. スウィフト3:このように範囲をフィルタリングすることが可能であったスウィフト2では範囲
- 5. スウィフトでフロントカメラを使用することはできません
- 6. 削除ボタンを押すことなくセルをスワイプでスウィフト
- 7. は、次の操作を行うことが可能であるスウィフト2でSwfit
- 8. は、私はこのような機能を持っていスウィフト
- 9. 私はどのように私の戻るボタンfunctionallytyをプログラムで使用することができますか?
- 10. スウィフトではどのように機能するのですか?
- 11. どのように私はこのようなボタンをWindowsのフォームで作ることができますか?
- 12. スウィフト2ではこれが機能するために使用3
- 13. scenekitファイルをプログラムで作成する(スウィフト)
- 14. スウィフトでスプレッドシートのような表を作成するには?
- 15. Firebaseユーザーがログアウトすることはできません - スウィフト
- 16. スウィフト3:エラー:私はスウィフト、コンパイラからこのエラーの意味を理解することはできません
- 17. iOSのスウィフト:私はスウィフト2.2についてのiBookを読んでいると、サンプルコードでは、この機能があるループ機能
- 18. イニシャライザの機能を使用する - スウィフト?
- 19. スウィフト機能にはデフォルトの完了ハンドラがありますか?スウィフト、機能で
- 20. なぜこのボタンで戻るボタンが機能しないのですか?
- 21. アウトレットを作ることができません。スウィフトIOS開発
- 22. initはこのコードはスウィフト2で正常に動作スウィフト3
- 23. スウィフト3 - .NETで経験したが、HTTPのための再利用可能なクラスを作成することは、スウィフトのnoobの
- 24. ボタンをクリックするとスウィフトが表示されなくなる
- 25. ナビゲーションバーの内容がリンクではなくボタンとして機能することは可能ですか
- 26. - ここでスウィフトが、Xcodeの
- 27. スウィフト - 作成ビューは、プログラム
- 28. Officeアドインのボタン/機能にショートカットをバインドすることはできますか?
- 29. scipy.weave.inlineでblitz ++のインデックス作成機能とブリッツ機能を使用することは可能ですか?
- 30. カスタムマングースクエリー機能を作成することはできますか?
いいですね。 –
私の答えは、 'UIButton'のサブクラスでどのようにできるかを示しています。 – vacawama