2017-02-21 83 views
0

我有從nib文件加載的自定義視圖。這個視圖有一個自定義的委託,我將委託設置到我的主視圖控制器,但是在某個時候,委託被重新設置爲nil。 這裏是我的自定義視圖添加到我的視圖控制器在nib文件的自定義視圖中設置自定義代理

@IBAction func newGoalButtonTapped(_ sender: UIBarButtonItem) { 
    let newGoalView = AddGoalView(frame: self.view.frame) 
    newGoalView.delegate = self 
    self.view.addSubview(newGoalView) 
    newGoalView.present() 
} 

這是我如何加載nib文件在我的自定義視圖init方法

override init(frame: CGRect) { 
    super.init(frame:CGRect(x: frame.origin.x + 10, y: frame.height, width: frame.width - 20, height: frame.height/3)) 
     self.addSubview(self.instanceFromNib()) 
} 


private func instanceFromNib() -> AddGoalView { 
    return UINib(nibName: "AddGoalView", bundle: nil).instantiate(withOwner: self, options: nil)[0] as! AddGoalView 
} 

,這是我聲明我的協議

protocol NewGoalCreatedDelegate { 
     func newGoalCreated(with proteinGoal:Int16, isCurrent:Bool)} 

我將我的nib文件的文件所有者設置爲我的自定義類「AddGoalView」,並將視圖自定義類設置爲「AddGoalView」。我也試過其中一種,但沒有運氣。

委託人不是零,直到我現在的方法。

internal func present() { 
    UIView.animate(withDuration: 0.3, animations: { 
     self.center = self.superview!.center 
    }, completion: {(finished:Bool) in 
     print(self.delegate!) 
    }) 
    print(self.delegate!) 
} 

之後,委託是零,我知道這是有關如何使用我的筆尖文件,但我不知道它是什麼。

+0

我覺得你對* Swing * vs * Swift *(已經修復)感到困惑 – Frakcool

+1

@Frakcool謝謝! –

+0

您的視圖控制器是否符合委託?即'類ViewController:UIViewController,NewGoalCreatedDelegate {}'? – Pierce

回答

0

我忘到網點文件的所有者聯繫,我xib.file enter image description here

的意見。