UIView 可以在初始化后加载另一个笔尖吗?



只是一个满足我好奇心的问题。UIView 在用笔尖初始化后,可以再次加载另一个笔尖吗?

例如,这是我用某个笔尖初始化视图的地方:

private func selfInit(){
Bundle(for: type(of: self)).loadNibNamed(fileName, owner: self, options: nil)
self.addSubview(contentView)
}
override init(frame: CGRect){
super.init(frame: frame)
selfInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
selfInit()
}

我可以在用捆绑包初始化笔尖后吗(...我又换了笔尖?

毫无疑问,覆盖初始值设定项以设置初始值以设置类变量(包括 UIViews)的默认值将是一个好主意,但是在添加子视图时,我建议在awakeFromNib()方法中执行此操作:

接收方从 界面生成器存档或 nib 文件。

nib 加载基础结构向每个 nib 发送 awakeFromNib 消息 从 NIB 存档重新创建的对象,但仅在加载和初始化存档中的所有对象之后。当对象收到awakeFromNib 消息时,可以保证它的所有出口和操作连接都已建立。

似乎更合适的方法是在其中添加子视图;例如,假设子视图应该与主视图中的其他组件有约束,您需要保证已建立所有组件。

因此:

override func awakeFromNib() {
super.awakeFromNib()
selfInit()
}

相关内容

最新更新