在 nib 文件的自定义视图中设置自定义委托
setting custom delegate in custom view from nib file
我有一个从 nib 文件加载的自定义视图。这个视图有一个自定义委托,我将委托设置为我的主视图控制器,但在某个时候委托再次设置为 nil。
这是我将自定义视图添加到我的视图控制器
@IBAction func newGoalButtonTapped(_ sender: UIBarButtonItem) {
let newGoalView = AddGoalView(frame: self.view.frame)
newGoalView.delegate = self
self.view.addSubview(newGoalView)
newGoalView.present()
}
这是我在自定义视图初始化方法中加载 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 文件的文件所有者设置为我的自定义 class "AddGoalView",并将视图自定义 class 设置为 "AddGoalView"。我也试过一个或另一个但没有运气。
委托在我现在的方法之后才为 nil。
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 文件有关,但我不知道它是什么。
我忘了link网点里的文件的主人,给大家意见xib.file
。
我有一个从 nib 文件加载的自定义视图。这个视图有一个自定义委托,我将委托设置为我的主视图控制器,但在某个时候委托再次设置为 nil。 这是我将自定义视图添加到我的视图控制器
@IBAction func newGoalButtonTapped(_ sender: UIBarButtonItem) {
let newGoalView = AddGoalView(frame: self.view.frame)
newGoalView.delegate = self
self.view.addSubview(newGoalView)
newGoalView.present()
}
这是我在自定义视图初始化方法中加载 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 文件的文件所有者设置为我的自定义 class "AddGoalView",并将视图自定义 class 设置为 "AddGoalView"。我也试过一个或另一个但没有运气。
委托在我现在的方法之后才为 nil。
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 文件有关,但我不知道它是什么。
我忘了link网点里的文件的主人,给大家意见xib.file
。