【问题标题】:How to detect a button press in Swift through currentTitle [closed]如何通过currentTitle检测Swift中的按钮按下[关闭]
【发布时间】:2017-04-11 18:28:31
【问题描述】:

我试图在当前标题为“取消”时检测按钮按下。按钮的原始标题是“查找”,但是一旦按下它就会变为“取消”,并且我想在标题为“取消”时按下按钮时做一些事情。

代码如下:

@IBAction func findMachinesTapped(sender: AnyObject?) {
      //Something is done
      if error = nil{
         self.findButton.setTitle("Cancel", forState: UIControlState.Normal)
        //if self.vizoPoolButton.currentTitle == "Cancel Vizo"{
        //self.deleteRequest()
        //self.loadingNotification.hide(true)
        //}
       }else{
         self.displayAlert("Could not find anything", message: "Try again later")
      }
    }

当按钮标题变为“取消”时,注释的代码块会自动调用函数 deleteRequest,而不是在按下按钮时,而标题为“取消”。

【问题讨论】:

  • 检查标题是个坏主意。当您支持多种语言时,它就会成为一个问题。
  • 不过我使用的是一种语言。
  • 也许现在。有更好的方法来跟踪状态。当前标签不是正确的方式。
  • @Dups rmaddy 是正确的,并通过跟踪状态检查代码来回答。
  • @rmaddy 我更新了问题,希望能更清楚。

标签: ios swift uibutton swift2 boolean


【解决方案1】:

为此,您需要在其selected 状态添加您想要的代码时检查按钮的状态,否则为default 条件。

@IBAction func buttonClicked(sender: UIButton) {
    sender.selected = !sender.selected  
    if sender.selected {
    // TITLE IS CANCEL 
    } else {
    // TITLE IS FIND
    }
}

【讨论】:

    【解决方案2】:
    • 为按钮创建一个 IBAction 方法。在方法内部检查其标题并执行任何功能。

      @IBAction func buttonClicked(sender: UIButton) {
          if let text = sender.titleLabel?.text {
             if text == "Cancel" {
               // Do something
            }
         }    
      }
      

    【讨论】:

    • 谢谢!现在,这会自动就像我按下按钮一样,因为它只是读取标题,并且如问题中所述,按钮标签在按下后立即变为“取消”。
    • 如果是正确的,请接受答案,以便对其他人也有用。
    • 它不工作。
    • 那么,它是相反的吗?就像按钮被按下并且它的标题变为“取消”,并且在函数内部标题仍然是“查找”对吧?
    • 我很困惑。使用您的函数,我在“// Do something”中的代码会自动读取,因为一旦标题为“取消”,函数就会调用代码,并且当按钮被按下为“查找”时,标题更改为“取消”。我要做的是在按下按钮时读取代码为“取消”,而不是在 titleLabel 为“取消”时读取代码
    【解决方案3】:

    制作两个按钮,一个在另一个之上。将“取消”按钮设置为在启用“查找”按钮时禁用。按下查找按钮后,执行查找按钮需要执行的任何操作,然后禁用查找按钮并启用取消按钮。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-09
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      • 1970-01-01
      • 2012-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多