【问题标题】:my sender.tag switch statement does not work我的 sender.tag 开关语句不起作用
【发布时间】:2016-09-02 17:17:17
【问题描述】:

我的开关不起作用,当我按下第一个按钮“buttonAclicked”时,一个标签显示这也是我想要的,但是当我尝试点击带有标签 3 的按钮时,我得到一个 SIGABRT 错误使整个事情崩溃。 我知道带有标签 3 的按钮可以工作,因为我已经为自己制作了一个 IBAction,它打印出来: ">"

但是当我将它设置到 switch 语句中时它不起作用,除了错误和其他打印之外没有任何内容被打印,但不是最后一个打印

func buttonAclicked(sender: UIButton) {
    print("button A was pressed")

    label.hidden = false
    label.setNeedsDisplay()
    if(sender.isKindOfClass(UIButton)) {
        print("hey")
    }

    switch sender.tag {
    case 3 :
        print("buuuutttttooonnn")
        break
    default :
        label.text = "0"
    }
}

【问题讨论】:

  • 您的带有标签 3 的按钮是否也会触发 buttonAclicked ?
  • 他说它做了一个 SIGABRT,这让我觉得他也在做其他事情。那断开连接并且可能使一切崩溃。 @astein,你有没有机会分享更多的周边代码,甚至整个项目?
  • 请不要再问多个类似的问题了。使用编辑功能细化您的问题,提供有关该问题的更多详细信息。
  • 好吧,我问类似问题的原因是因为我没有得到一个对我有帮助的答案,即使我编辑我也没有得到任何新的答案:/
  • 好吧,SIGABRT 错误是因为按钮没有输出,但是当我输出像“func btnThreeclicked(sender: UIButton) { print(""hey")”这样的输出时它可以工作,所以就好像switch语句没有连接到button/sender.tag

标签: ios swift button switch-statement sigabrt


【解决方案1】:

创建正确的 Button IBAction 并正确连接到情节提要。它应该可以解决您的 SIGABRT 错误。 您的错误是因为没有将 IBAction 正确连接到 Storyboard

@IBOutlet weak var buttonOutlat: UIButton! // creat Button Outlet hera
@IBOutlet weak var label: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()

    buttonOutlat.tag = 3 //  <- you can set sender.tag here
}

@IBAction func buttonAclicked(_ sender: UIButton) { // creat proper Button Action
    print("button A was pressed")

    switch sender.tag{
    case 3 :
        print("buuuutttttooonnn---3")
        label.text = "button-3"
        break
    default :
        label.text = "button-default"
    }
}

【讨论】:

    猜你喜欢
    • 2018-09-11
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多