【问题标题】:UIButton press not working with an IF statementUIButton press 不适用于 IF 语句
【发布时间】:2018-06-21 12:04:55
【问题描述】:

我目前正试图让if 语句仅在用户按下 UIButton 时工作,然后运行self.eslTopics.isHidden = false 以显示我的 UIPickerView。编写if 语句的正确语法是什么?我目前有一个名为“showwheel”的按钮,用于将pickerview UI 从 hidden = true 更改为 false。

if showWheel{
    self.eslTopics.isHidden = false
}

Xcode 正在尝试抛出错误:

可选类型 'UIButton!'不能用作布尔值;改为测试 '!= nil',将 'showWheel' 替换为 '(showWheel != nil)'

这也没有意义或工作。

【问题讨论】:

  • 请提供按钮的动作方法代码。
  • 问清楚更好看看怎么问qtn
  • 您应该阅读 Apple 的 UIButtonUIControltarget/action 文档
  • 在问任何问题之前先做一些研究
  • showWheel 是一个按钮,在 if 条件下不能用作布尔值。如果条件有效,您将需要一个布尔变量来完成此操作。

标签: ios swift uibutton uipickerview


【解决方案1】:

您可以创建一个IBAction 方法并连接到UIButtonTouchDown 事件。

@IBAction func btnShowWheelTapped(_ sender: UIButton) {

     self.eslTopics.isHidden = false
}

注意:如果你在事件中实现按钮的默认 touchup,那么当从按钮上抬起触摸时它会被调用。

供参考...

【讨论】:

    【解决方案2】:

    您必须将IBAction 与按下按钮相关联,并在该方法中添加代码。

    @IBAction func toggleVisibility(_ sender: UIButton) {
        self.eslTopics.isHidden = false
    }
    

    【讨论】:

      【解决方案3】:

      如果您的变量showWheelUIButton! 类型的实例变量(隐式展开可选UIButton),那么您的代码不合法​​。

      在 C/C++/Objective-C 中,这样说是合法的

      if showWheel
      

      编译器将其理解为“如果 showWheel 为真”,而真等价于 !0 / !nil

      这在 Swift 中是不合法的。在 Swift 中,您必须显式检查 nil 是否为可选项,因此您的代码需要阅读

      if showWheel != nil
      

      请注意,您应该将条件放在 Swift 中的括号内。不要像在 C/C++/Objective-C/Java 中那样使用 if (showWheel != nil)

      【讨论】:

        【解决方案4】:

        正如错误中提到的:

        可选类型 'UIButton!'不能用作布尔值;测试'!= nil' 代替,将 'showWheel' 替换为 '(showWheel != nil)'

        showWheel 是 UIButton 的类型,表示如果您正在输入:

        if showWheel { }
        

        表示检查showWheel是否为nil,同:

        if showWheel != nil { }
        

        这似乎与您的要求无关,我们已经假设 showWheel 不为零。

        你应该做的-在showWheelIBAction中-是直接调用self.eslTopics.isHidden = false而不使用任何if语句。

        如果您不熟悉向 UIButton 添加操作,可以查看

        【讨论】:

          猜你喜欢
          • 2023-04-03
          • 1970-01-01
          • 2021-09-28
          • 2018-08-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-08
          • 2013-05-28
          相关资源
          最近更新 更多