所以我有一个带3个按钮的故事板,我想为所有这3个按钮创建1个动作,并根据他们的标签/ ID决定做什么...
有没有办法为每个按钮获取某种标识符?
顺便说一下他们是图像,所以他们没有标题.
@IBAction func mainButton(sender: UIButton) {
println(sender)
}
Run Code Online (Sandbox Code Playgroud)
Vas*_*rov 22
您可以tag
在每个按钮的故事板中设置一个.然后你可以这样识别它们:
@IBAction func mainButton(sender: UIButton) {
println(sender.tag)
}
Run Code Online (Sandbox Code Playgroud)
编辑:为了更具可读性,您可以定义一个枚举,其值与所选标签相对应.所以,如果你喜欢设置标签0
,1
,2
为你的按钮,上面的类声明,你可以这样做:
enum SelectedButtonTag: Int {
case First
case Second
case Third
}
Run Code Online (Sandbox Code Playgroud)
然后,您将拥有以下代码来处理硬编码值:
@IBAction func mainButton(sender: UIButton) {
switch sender.tag {
case SelectedButtonTag.First.rawValue:
println("do something when first button is tapped")
case SelectedButtonTag.Second.rawValue:
println("do something when second button is tapped")
case SelectedButtonTag.Third.rawValue:
println("do something when third button is tapped")
default:
println("default")
}
}
Run Code Online (Sandbox Code Playgroud)
Pra*_*ani 14
如果您想使用单一方法创建3个按钮,则可以通过以下代码执行此操作...尝试此操作
Swift 3
示例: -
override func viewDidLoad()
{
super.viewDidLoad()
Button1.tag=1
Button1.addTarget(self,action:#selector(buttonClicked),
for:.touchUpInside)
Button2.tag=2
Button2.addTarget(self,action:#selector(buttonClicked),
for:.touchUpInside)
Button3.tag=3
Button3.addTarget(self,action:#selector(buttonClicked),
for:.touchUpInside)
}
func buttonClicked(sender:UIButton)
{
switch sender.tag
{
case 1: print("1") //when Button1 is clicked...
break
case 2: print("2") //when Button2 is clicked...
break
case 3: print("3") //when Button3 is clicked...
break
default: print("Other...")
}
}
Run Code Online (Sandbox Code Playgroud)
您可以为按钮创建一个插座,然后实现:
@IBAction func mainButton(sender: UIButton) {
switch sender {
case yourbuttonname:
// do something
case anotherbuttonname:
// do something else
default: println(sender)
}
}
Run Code Online (Sandbox Code Playgroud)
假设您将它们的所有专有名称指定为@IBOutlets:
@IBOutlet var weak buttonOne: UIButton!
@IBOutlet var weak buttonTwo: UIButton!
@IBOutlet var weak buttonThree: UIButton!
Run Code Online (Sandbox Code Playgroud)
您可以使用以下内容来确定哪个是哪个
@IBAction func didPressButton(sender: AnyObject){
// no harm in doing some sort of checking on the sender
if(sender.isKindOfClass(UIButton)){
switch(sender){
case buttonOne:
//buttonOne action
break
case buttonTwo:
//buttonTwo action
break
case buttonThree:
//buttonThree action
break
default:
break
}
}
Run Code Online (Sandbox Code Playgroud)
Swift 3代码: 在xcode中请先为每个按钮设置标签,然后按照代码进行操作.
@IBAction func threeButtonsAction(_ sender: UIButton) {
switch sender.tag {
case 1:
print("do something when first button is tapped")
break
case 2:
print("do something when second button is tapped")
break
case 3:
print("do something when third button is tapped")
break
default:
break
}
}
Run Code Online (Sandbox Code Playgroud)
@IBAction func buttonPressed(_ sender: UIButton) {
if sender.tag == 1 {
print("Button 1 is pressed")
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
56418 次 |
最近记录: |