web-dev-qa-db-ja.com

ボタンが押されていないときにボタン関数を呼び出すにはどうすればよいですか

ボタンに接続されたIBActionがあり、ボタンが押されていなくてもその関数を実行する方法があるかどうかを知りたいと思いました。これは私が試したものです...

注:このプロジェクトではSwiftを使用しています。

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

@IBAction func buttonPressed(sender: AnyObject) {

    print("Called Action")

}
6
nachshon fertel

送信者引数をオプションにし、ButtonPressedにnilを渡します。

self.ButtonPressed( nil )


@IBAction func ButtonPressed( sender: AnyObject? ) {
    println("Called Action")
}
12
Satachito

1つの方法は、ボタンをそれぞれのInterface Builderボタンにリンクし、呼び出すときに関数に渡すことです。

@IBOutlet weak var yourButton: UIButton!

// When you call method
self.buttonPressed(yourButton)

//function must begin with small letter as per iOs naming convention
@IBAction func buttonPressed(sender: AnyObject) {
    //println("Called Action"). This method has been renamed to print() in Swift 2.0
    print("Called Action")
}

または、そのように関数を定義すると、以前と同じ方法でメソッドを呼び出すことができます。

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

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

ButtonPressed関数には引数senderが必要ですが、それを呼び出すときに何も渡されません。ただし、これをプログラムで実行している場合は、明らかにsenderがありません。

これを回避する2つの方法:

  • 送信者パラメーターをオプション(AnyObjectの代わりに_AnyObject?_)にして、self.ButtonPress(nil)を呼び出します。私はこれを試したところ、うまくいきました。
  • すべてのボタン押下関数を別の関数に配置します(例:performButtonPress())。 IBActionアウトレット内から呼び出します。プログラムでボタンを押したい場合は、performButtonPress()を直接呼び出します。
1
Matthew Quiros

次の形式を使用してボタンアクションを呼び出します:Swift

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

ボタンアクションを呼び出すには:

let button = UIButton()
self.buttonSelected(button)
0
Ram Madhavan

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

self.buttonPressed (sender: self)

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

buttonPressed (sender: self)

両方ともSwift 3

0
ooenomel2003
    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
0
Urvish Modi