代理人が作業するために必要なコードをすべて完了しました。私のViewControllerで: class ViewController: UIViewControllerCustomViewDelegate
は、私もこの持っている:スウィフト代理人が呼び出されていない
override func viewDidLoad() {
super.viewDidLoad()
let myCustomView = Bundle.main.loadNibNamed("ImageHeaderView", owner: self, options: nil)?[0] as! ImageHeaderView
myCustomView.delegate = self
}
func goToNextScene() {
print("GOTOSCENE2")
}
をそして、私のカスタムビューに私が持っているこの:
ありimport UIKit
protocol CustomViewDelegate: class { // make this class protocol so you can create `weak` reference
func goToNextScene()
}
@available(iOS 10.0, *)
class ImageHeaderView : UIView {
@IBOutlet weak var followme: UISwitch!
@IBOutlet weak var profileImage : UIImageView!
@IBOutlet weak var backgroundImage : UIImageView!
weak var delegate: CustomViewDelegate?
override func awakeFromNib() {
super.awakeFromNib()
self.backgroundColor = UIColor(hex: "E0E0E0")
self.profileImage.layer.cornerRadius = self.profileImage.frame.size.height/2
self.profileImage.clipsToBounds = true
self.profileImage.layer.borderWidth = 1
self.profileImage.layer.borderColor = UIColor.white.cgColor
//self.profileImage.setRandomDownloadImage(80, height: 80)
//self.backgroundImage.setRandomDownloadImage(Int(self.frame.size.width), height: 100)
}
@IBAction func followme(_ sender: AnyObject) {
UserDefaults.standard.set(followme.isOn, forKey: "followme")
}
@IBAction func logout(_ sender: AnyObject) {
delegate?.goToNextScene()
print("GOTOSCENE")
}
}
スローエラーがありませんが、私はクリックしたときに/ボタンをタップし、何も起こりません。それは単に "GOTOSCENE"を印刷します。
弱い部分を削除しても問題は解決しません。 weakはデリゲート解除後にデリゲートにアクセスするのを防ぐだけです(つまり、デリゲートが解放されていればデリゲートはゼロになります) – giorashc
myCustomViewがビューに追加されていませんか?たぶんあなたは複数のインスタンスを持っていますか? – tonik12
クラスと弱点を削除しました。まだ動かない。 –