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

10

1 つの方法は、ボタンをそれぞれのインターフェイス ビルダー ボタンにリンクし、呼び出し時に関数に渡すことです。

@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.

これを回避するには、次の 2 つの方法があります。

  • 送信者パラメーターを (AnyObject?の代わりにAnyObject) オプションにして、 を呼び出しself.ButtonPress(nil)ます。私はこれを試してみましたが、うまくいきます。
  • すべてのボタンを押す機能を別の機能に入れます (例: ) performButtonPress()。IBAction アウトレット内から呼び出します。プログラムでボタンを押したい場合は、 を直接呼び出しますperformButtonPress()
于 2015-05-01T12:37:32.290 に答える
0

「送信者」として「自己」を使用する必要があります。例:

self.buttonPressed (sender: self)

またはより単純なバージョン

buttonPressed (sender: self)

どちらもSwift 3でテスト済み

于 2017-01-04T16:16:39.803 に答える
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 に答える