ボタンタッチで呼び出しを行うアクションを設定しようとしています。 ボタンをIBに作成し、メインクラスで必要な操作を設定しようとしています。Swift:内部クラスのボタンターゲットを追加する
設定が完了したら、ボタンに触れても何も起こりません。私は、のターゲットまたはのアクションセレクタに問題があると推測します。この場合、私はどちらを使うべきですか?ありがとう!例については
class View: UIView {
private class PhoneCallSetter: UIResponder {
private var phone: String!
func initialize(button: UIButton!, phoneNumber: String!) {
self.phone = phoneNumber
button.addTarget(self, action: #selector(PhoneCallSetter.call), forControlEvents: UIControlEvents.TouchUpInside)
}
@objc func call() {
if let phoneCallURL: NSURL = NSURL(string: "tel://\(phone)") {
let application: UIApplication = UIApplication.sharedApplication()
if (application.canOpenURL(phoneCallURL)) {
application.openURL(phoneCallURL);
}
}
}
}
@IBOutlet weak var button: UIButton!
// somewhere down there I call
func setPhone() {
PhoneCallSetter().initialize(button, phoneNumber: "123-456")
}}
UIViewクラスでボタンアクションを作成するだけです。このメソッドでは、メインコントローラクラスで定義するブロックを呼び出すことができます。 – Amanpreet
あなたのボタンの '@ IBAction'を' setPhone() 'メソッドにフックしましたか? – sargeras
@Amanpreetはオプションのように聞こえるが、その関数(呼び出し)に値を渡す必要がある。何とかそれを私のボタンに関連付けるのだろうか? –