_@IBAction func getNewPhotoAction(sender: AnyObject) {
println("getNewPhotoAction")
}
override func viewDidLoad() {
super.viewDidLoad()
self.getNewPhotoAction(sender: AnyObject) // Error
}
_
getNewPhotoAction
のviewDidLoad
IBActionメソッドを呼び出したいだけです。
この行に入力するパラメーター-> self.getNewPhotoAction(?????)
?
パラメータはありません。電話するだけです。
私はObjective-Cスタイルで使用しました:
_[self getNewPhotoAction:nil]
_
Swiftスタイルがわかりません。
パラメータsender
は、アクションメソッドを呼び出すユーザーを示します。 viewDidLoad
から呼び出す場合は、self
を渡すだけです。
override func viewDidLoad() {
super.viewDidLoad()
getNewPhotoAction(self)
}
ちなみに、sender
メソッドのgetNewPhotoAction
パラメータを使用しなかった場合は、パラメータ名を省略できます。
@IBAction func getNewPhotoAction(AnyObject) {
println("getNewPhotoAction")
}
常に、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()
}
それでもUIButton
またはアクションを送信しているものを参照する必要があり、同時にコードからそれを呼び出したい場合は、次のようにすることもできます。
onNext(UIButton())
無駄ですが、コードは少なくなります。
実際には、any object
を渡す必要はまったくありません。 sender
を使用する必要がない場合は、function
を宣言せずに次のように宣言します。
@IBAction func getNewPhotoAction() { ... }
次のように使用します。
self.getNewPhotoAction()
このメソッドがinterface builder
のイベントに接続されている場合、この変更(削除してから追加し直す)を行うときにinterface builder
のコンセントを再接続する必要がある場合があります。
@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)
@IBAction func getNewPhotoAction(sender: AnyObject? = nil) {
print("getNewPhotoAction")
}
override func viewDidLoad() {
super.viewDidLoad()
self.getNewPhotoAction(nil)
}
Swift 4.2
@IBAction func getNewPhotoAction(sender: Any) {
println("getNewPhotoAction")
}
override func viewDidLoad() {
super.viewDidLoad()
self.getNewPhotoAction(AnyObject.self)
}
送信者がいないため、nil
を渡してください。
self.getNewPhotoAction(nil)