2016-09-20 18 views
1

代理人が作業するために必要なコードをすべて完了しました。私の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"を印刷します。

+0

弱い部分を削除しても問題は解決しません。 weakはデリゲート解除後にデリゲートにアクセスするのを防ぐだけです(つまり、デリゲートが解放されていればデリゲートはゼロになります) – giorashc

+0

myCustomViewがビューに追加されていませんか?たぶんあなたは複数のインスタンスを持っていますか? – tonik12

+0

クラスと弱点を削除しました。まだ動かない。 –

答えて

3

私は

あなたの問題はここ

override func viewDidLoad() { 
      super.viewDidLoad() 
      let myCustomView = Bundle.main.loadNibNamed("ImageHeaderView", owner: self, options: nil)?[0] as! ImageHeaderView 
     myCustomView.delegate = self 

     } 

であると感じる私はあなたがストーリーボードからimageHeaderviewを追加したと思うのviewDidLoadに、あなたはImageHeaderViewの新しいオブジェクトを作成しているし、新しく作成されたオブジェクトにデリゲートを割り当てます。

ImageHeaderViewをアウトレットにし、代理人をアウトレットオブジェクトに割り当てようとします。

これが問題を解決することを願っています。

+0

ImageViewHeaderViewのボタンをViewControllerにドラッグしているようです。 –

+0

ボタンではありません。 ImageViewHeaderView全体をドラッグ –

+0

非常に残念です。私は本当にそれを追加する方法を知りません。私は通常、Ctrlキーを押しながらviewcontrollerにドラッグしますが、それを追加できないようです。 –

関連する問題