Cod*_*ent 29
在Interface Builder中,选择Attributes Inspector并为每个按钮设置一个唯一编号的Tag,然后您可以执行以下操作:
@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
}
}
Run Code Online (Sandbox Code Playgroud)
要将操作连接到多个按钮:在Interface Builder中,右键单击视图层次结构中的ViewController,然后单击鼠标左键以将操作连接拖动到每个按钮.
Hay*_*abe 10
是的,转换语句是这里的方法.对于UIButton,您可以将其链接到用户与按钮交互时调用的选择器,通常是TouchUpInside事件.该addTarget方法,并有效的选择签名(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!
Run Code Online (Sandbox Code Playgroud)
您可以将它们全部连接到同一个方法,并根据哪个是发件人来分支逻辑.例如:
@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
}
}
Run Code Online (Sandbox Code Playgroud)
注意:Swift中的Case语句必须是详尽的,因此您必须包含一个默认情况,即使它永远不应该被调用.
您只需比较参考而不是标记.这样,您就不会引入新的错误,因为与您自己键入的标记不同,引用是由编译器自动创建的.
@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 {
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
27106 次 |
最近记录: |