2016-09-20 4 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은 할당 취소 후 대리인이 액세스되지 못하도록 만 보호합니다 (대리자가 해제 된 경우 대리자가 nil이 됨). – 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를 내보내고 outleted 객체에 대리자를 할당하십시오.

호프로 문제를 해결할 수 있습니다.

+0

ImageViewHeaderView의 버튼을 내 ViewController로 드래그하는 것 같습니다. –

+0

버튼이 아닙니다. 전체 이미지 뷰 헤드 뷰 –

+0

매우 죄송합니다. 나는 그것을 어떻게 추가하는지 정말로 모른다. 나는 보통 CTRL을 잡고 viewcontroller로 드래그하지만 추가하지 못하는 것 같습니다. –

관련 문제