【问题标题】:UIButton Not Responding Properly When Selected选择时 UIButton 没有正确响应
【发布时间】:2018-11-28 13:35:46
【问题描述】:

我创建了一个有四个按钮的视图控制器。在每个按钮上,都会在按钮上放置一个复选标记的图像,但在加载视图时会隐藏。选择按钮后,该按钮上应显示复选标记,以通知用户系统已进行选择。如果用户在屏幕上选择不同的按钮,我希望原始按钮复选标记消失,复选标记出现在新选择上。

当我运行软件并加载视图时,一切正常。问题是在我做出第一个按钮选择之后。当我在视图加载后第一次单击按钮时,复选标记将按原样出现在该视图上。一旦我尝试选择第二个按钮,我就无法选择它,并且复选标记停留在选择的第一个按钮上。

这个函数的代码如下:

@IBAction func nomineeSelected(_ sender: UIButton) {
        if sender == optionA {
          checkboxA.hideBox = false
          checkboxA.on = true
          checkboxB.isHidden = true
          checkBoxC.isHidden = true
          checkBoxD.isHidden = true

        } else if sender == optionB {
            checkboxB.hideBox = false
            checkboxB.on = true
            checkboxA.isHidden = true
            checkBoxC.isHidden = true
            checkBoxD.isHidden = true
            checkBoxD.isHidden = true
        } else if sender == optionC {
            checkBoxC.hideBox = false
            checkBoxC.on = true
            checkboxA.isHidden = true
            checkboxB.isHidden = true
            checkBoxD.isHidden = true
        } else  {
            checkBoxD.hideBox = false
            checkBoxD.on = true
            checkboxA.isHidden = true
            checkboxB.isHidden = true
            checkBoxC.isHidden = true

        }
    }

【问题讨论】:

  • 您是否将 IBAction 正确添加到所有按钮?如果'else'块被正确执行,你可以记录吗?我仍然会为按钮添加标签,并通过切换发件人的标签来替换 if-else。
  • @Josh 我将其切换为 switch 语句,并通过在每种情况下添加打印行来测试是否选择了每个按钮。系统会选择每个案例,但未显示复选标记。
  • 在某处托管您的代码。会尽力帮忙的。

标签: ios swift if-statement uibutton ibaction


【解决方案1】:

使用=== 运算符而不是== 来测试两个对象引用是否都引用同一个对象实例。
像这样if sender === optionA {

Read more about Operators in swift

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 2016-10-13
    • 2018-09-01
    • 1970-01-01
    相关资源
    最近更新 更多