从nib文件在自定义视图中设置自定义委托

时间:2017-02-21 00:45:51

标签: ios swift delegates nib

我有一个从nib文件加载的自定义视图。这个视图有一个自定义委托,我将委托设置为我的主视图控制器,但在某些时候,委托再次设置为nil。 这是我将自定义视图添加到我的视图控制器

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

以下是我在自定义视图init方法

中加载nib文件的方法
 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!)
}

之后委托是零,我知道这与我如何使用我的nib文件有关,但我不知道它是什么。

1 个答案:

答案 0 :(得分:0)

我忘了将文件所有者的插座链接到我的xib.file enter image description here

的视图