【问题标题】:Call @IBAction function without pressing the button在不按下按钮的情况下调用@IBAction 函数
【发布时间】:2018-12-12 22:11:15
【问题描述】:

我如何从calc() 调用button1() func 和原始sender(就像我点击这个按钮一样)?使用nil 调用func 是不好的解决方案,因为原始发件人丢失了,我无法通过sender?.image = UIImage(named: "") 更改按钮图像。

其他主题中的所有答案都提供使用button.sendActions(for: .touchUpInside)。但是这个解决方案不起作用。

var var1 = true
var var2 = 1

@IBAction func button1(_ sender: UIBarButtonItem?) {

    if var2 == 1 {

        sender?.image = UIImage(named: "1")

    } else {
        sender?.image = UIImage(named: "2")
    }

}


func calc() {

    if var1 {
        button1(nil)
    }

}

【问题讨论】:

    标签: swift function button ibaction


    【解决方案1】:

    制作按钮的出口并将引用作为发件人传递

    @IBOutlet var outletButton: UIButton!
    
    func calc() {
    
        if var1 {
            button1(outletButton)
        }
    
    }
    

    【讨论】:

      【解决方案2】:
      var var1 = true
      var var2 = 1
      
      
      @IBAction func button1(_ sender: UIBarButtonItem?) {
          button1Action()
      }
      
      func button1Action() {
          if var2 == 1 {
              sender?.image = UIImage(named: "1")
      
          } else {
              sender?.image = UIImage(named: "2")
          }
      }
      
      
      func calc() {
          if var1 {
              button1Action()
          }
      }
      

      【讨论】:

        【解决方案3】:

        您可以拨打self.perform(Selector, with: self)

        【讨论】:

          猜你喜欢
          • 2015-08-14
          • 1970-01-01
          • 1970-01-01
          • 2021-11-27
          • 2016-07-10
          • 1970-01-01
          • 2018-10-21
          • 2013-02-11
          相关资源
          最近更新 更多