私はアプリの言語を切り替えることができる複数のボタンを持っています。ボタンごとに複数のIBActionsを作成する代わりに、それらをすべて1つのIBActionに接続し、ボタンを押したときに言語を変更する方法がありますか?私はswitch文がこのような状況で使うのが良いだろうと思っていますが、それを設定する方法が正確にはわかりません。 Interface BuilderでSwiftの複数のボタンに1つのIBActionを使用する方法は?
5
A
答えて
19
、属性インスペクタを選択し、一意の番号で各ボタンのタグを設定し、その後、あなたはこのような何か行うことができます。複数のボタンにアクションを接続するには
@IBAction changeLanguage(sender: AnyObject) {
guard let button = sender as? UIButton else {
return
}
switch button.tag {
case 1:
// Change to English
case 2:
// Change to Spanish
case 3:
// Change to French, etc
default:
print("Unknown language")
return
}
}
を:でInterface Builderでビュー階層のViewControllerを右クリックし、左クリックしてアクション接続を各ボタンにドラッグします。
6
はい、switch文がここに移動する方法です。 UIButtonの場合は、ユーザーがボタンとやりとりしたときに呼び出されるセレクタ、通常はTouchUpInsideイベントにリンクします。 The addTarget method, and valid selector signatures (apple.com)これらのうち、@IBAction func doSomething(sender: UIButton)
または@IBAction func doSomething(sender: UIButton, forEvent event: UIEvent)
という形式のメソッドを使用して、イベントをトリガしたボタンへの参照がセレクタに渡されるようにします。あなたのViewControllerコードで
は、あなたは、(おそらくストーリーボードに、または手動で作成しました。)あなたのUIButtonsへの参照を持っているのは、あなたはあなたが同じ方法にそれらのすべてを接続します
@IBOutlet weak var frenchButton: UIButton!
@IBOutlet weak var spanishButton: UIButton!
@IBOutlet weak var englishButton: UIButton!
があるとしましょうよどちらが送信者であったかに基づいてロジックを分岐させます。例えば:
@IBAction func changeLanguage(sender: UIButton) {
switch sender {
case frenchButton:
// Change Language to French
print ("C'est si bon")
case spanishButton:
// or Spanish
print ("Muy Bueno")
case englishButton:
// or English
print ("It's pretty cool")
default:
break
}
}
注:あなたはそれが呼び出されるべきではありませんにもかかわらず、デフォルトのケースを含める必要がありますのでスウィフトでのcase文は、網羅的である必要があります。
3
私たちは、はいタグ
@IBOutlet weak var firstButton: UIButton!
@IBOutlet weak var secondButton: UIButton!
@IBOutlet weak var thirdButton: UIButton!
@IBAction changeLanguage(sender: UIButton) {
if sender == firstButton {
} else if sender == secondButton {
} else if sender == thirdButton {
}
}
関連する問題
- 1. 複数のボタンに1つのwebViewを使用する方法
- 2. 複数のイベントに1つのボタンを使用する方法Visual Basic
- 3. 別のビューSwiftでIBActionを使用する方法
- 4. 1つのタグに複数の「if」を使用する方法
- 5. 複数のコントローラに1つのモジュールを使用する方法
- 6. 複数の方法で1つの整数を使用する
- 7. 2つのフラグメントに1つのボタンを使用する方法
- 8. IBActionボタンのデザイン方法
- 9. excel vbaの複数のボタンに1つのsubを使用
- 10. 複数のマシンで1つのソナーサーバを使用する方法
- 11. 複数のMapActivitiesで1つのMapViewを使用する方法
- 12. パスカルの複数のボタンに対して1つの手順を使用する方法はありますか?
- 13. 複数のBooleanBindingを1つのボタンに追加する方法は?
- 14. 複数のボタンにテンプレートダイアログパネルを使用する方法は?
- 15. 1つのSyncAdapterクラスを複数の権限に使用する方法は?
- 16. Xcodeで複数のView Controllerで@IBActionと@IBOutletを使用する方法
- 17. ボタンの@IBInspectable変数にアクセスする@IBAction
- 18. 1つの「使用」で複数のモジュールを「使用する」方法
- 19. 1つのライブラリのみを使用する方法(複数のものを使用する方法)
- 20. 複数のコントローラで1つのディレクティブを使用する方法は?
- 21. JavaScriptの変数を1つのボタンのステータスに使用する
- 22. spring複数のテストに1つのWeb環境を使用する方法
- 23. 1つのテンプレートに複数の動的IDを使用する方法
- 24. 複数のビューに1つの配列を使用する方法?
- 25. Xcodeで1つのIBActionに対して複数のUIAlertViewを使用できますか?
- 26. Splinterを使用して1つのページ上の複数のボタンをクリックする
- 27. 複数のリンクを1つのファイルにダウンロードする方法は?
- 28. 複数のpojoを1つのxmlにマーシャリングする方法は?
- 29. 複数のリストを1つのリストにマップする方法は?
- 30. 1つのアプリケーションで複数のjava.net.CookieHandlerを使用するには?
せずにその良いアイデアを、それを解決することができれば、タグを設定することが好きではない; D –
ibactionsを扱う1セットアップを設定するために、どのように任意のアイデア? – SwiftyJD
送信者には多くのプロパティがあります:タイトル、タグなど。また、識別プロパティでカスタムボタンクラスを作成することもできます。 –