web-dev-qa-db-ja.com

Swift-パラメータなしでviewDidLoadで@IBActionメソッドを呼び出します

_@IBAction func getNewPhotoAction(sender: AnyObject) {
    println("getNewPhotoAction")
}

override func viewDidLoad() {
    super.viewDidLoad()
    self.getNewPhotoAction(sender: AnyObject) // Error
}
_

getNewPhotoActionviewDidLoad IBActionメソッドを呼び出したいだけです。

この行に入力するパラメーター-> self.getNewPhotoAction(?????)

パラメータはありません。電話するだけです。

私はObjective-Cスタイルで使用しました:

_[self getNewPhotoAction:nil]
_

Swiftスタイルがわかりません。

15
hahaha

パラメータsenderは、アクションメソッドを呼び出すユーザーを示します。 viewDidLoadから呼び出す場合は、selfを渡すだけです。

override func viewDidLoad() {
    super.viewDidLoad()
    getNewPhotoAction(self)
}

ちなみに、senderメソッドのgetNewPhotoActionパラメータを使用しなかった場合は、パラメータ名を省略できます。

@IBAction func getNewPhotoAction(AnyObject) {
    println("getNewPhotoAction")
}
39
ylin0x81

常に、viewDidLoadまたはIBActionで呼び出す別のfuncを作成できます

override func viewDidLoad() {
   super.viewDidLoad()
   self.getNewPhoto()
}

func getNewPhoto(){
    //do whatever you want here. 
    println("getnewphotoaction")
    println("whatever you want")
}
@IBAction func getNewPhotoAction(sender: AnyObject) {
    self.getNewPhoto()
}
5
Amerino

それでもUIButtonまたはアクションを送信しているものを参照する必要があり、同時にコードからそれを呼び出したい場合は、次のようにすることもできます。

onNext(UIButton())

無駄ですが、コードは少なくなります。

3
Alexandre G

実際には、any objectを渡す必要はまったくありません。 senderを使用する必要がない場合は、functionを宣言せずに次のように宣言します。

@IBAction func getNewPhotoAction() { ... }

次のように使用します。

self.getNewPhotoAction()

このメソッドがinterface builderのイベントに接続されている場合、この変更(削除してから追加し直す)を行うときにinterface builderのコンセントを再接続する必要がある場合があります。

2
jaime
@IBAction func getNewPhotoAction(sender: AnyObject?){
    ......
}

**AnyObject** means that you have to pass kind of Object which you are using, nil is not a AnyObject.
But **AnyObject?**, that is to say AnyObject is Optional, nil is a valid value.
meaning the absence of a object.

self .getNewPhotoAction(nil)
2
Himanshu padia
@IBAction func getNewPhotoAction(sender: AnyObject? = nil) {
    print("getNewPhotoAction")
}

override func viewDidLoad() {
    super.viewDidLoad()
    self.getNewPhotoAction(nil)
}
1
米米米

Swift 4.2

@IBAction func getNewPhotoAction(sender: Any) {
    println("getNewPhotoAction")
}

override func viewDidLoad() {
    super.viewDidLoad()
    self.getNewPhotoAction(AnyObject.self)
}
1
Jamil Shamar

送信者がいないため、nilを渡してください。

self.getNewPhotoAction(nil)
0
David