6

我有一个连接到按钮的 IBAction,我想知道即使没有按下按钮,是否有任何方法可以运行该功能。这是我试过的...

注意:我在这个项目中使用 swift。

//I get an error when I type this code?
self.buttonPressed()

@IBAction func buttonPressed(sender: AnyObject) {

    print("Called Action")

}
4

6 回答 6

16

将您的 sender 参数设为可选并将 nil 传递给 ButtonPressed。

self.ButtonPressed( nil )


@IBAction func ButtonPressed( sender: AnyObject? ) {
    println("Called Action")
}
于 2015-05-01T12:59:22.317 回答
10

一种方法是将您的按钮链接到其各自的界面构建器按钮,并在您调用它时将其传递给您的函数。

@IBOutlet weak var yourButton: UIButton!

self.buttonPressed(yourButton)

@IBAction func buttonPressed(sender: AnyObject) {
    print("Called Action")
}

或者,像这样定义你的函数,然后你就可以像以前一样调用你的方法:

@IBAction func buttonPressed(sender: AnyObject? = nil) {
    print("Called Action")
}

// Call your method like this
self.buttonPressed()

// or this
self.buttonPressed(sender: nil)
于 2015-05-01T13:15:03.233 回答
2

您的ButtonPressed函数需要一个参数sender,但在调用它时您没有传递任何参数。但是,如果您以编程方式执行此操作,那么您显然没有sender.

解决此问题的两种方法:

  • 将 sender 参数设为可选(AnyObject?而不是AnyObject)并调用self.ButtonPress(nil)。我刚试过这个,它有效。
  • 将所有按钮按下功能放在一个单独的功能中,例如performButtonPress(). 从 IBAction 插座内部调用它,如果你想以编程方式按下按钮,直接调用performButtonPress().
于 2015-05-01T12:37:32.290 回答
1

使用以下格式调用按钮操作:Swift 3

@IBAction func buttonSelected(_ sender: UIButton) {
        print("Butten clicked")
}

要调用按钮操作:

let button = UIButton()
self.buttonSelected(button)
于 2017-09-01T07:52:58.387 回答
0
    lazy var Button : UIBarButtonItem = {
      let barButtonItem = UIBarButtonItem(title: "Button", style: .done, target: self, action: #selector(btnSelection))
      return barButtonItem
    }()


    func btnSelection(){
     // Code
    }

    // Now you can call self.btnSelection() whenever you want
于 2018-07-18T13:32:22.407 回答
0

您需要使用“self”作为“sender”,例如:

self.buttonPressed (sender: self)

或更简单的版本

buttonPressed (sender: self)

两者都在 Swift 3 中测试过

于 2017-01-04T16:16:39.803 回答