我想在故事板中的多个视图控制器中使用视图。因此,我考虑在外部 xib 中设计视图,以便更改反映在每个视图控制器中。但是如何从故事板中的外部 xib 加载视图?这是否可能?如果不是这种情况,还有哪些其他替代方案可以满足上述情况?
我的完整示例是here,但我将在下面提供一个摘要。
Layout
将同名的 .swift 和 .xib 文件添加到您的项目中。 .xib 文件包含您的自定义视图布局(最好使用自动布局约束)。
使 swift 文件成为 xib 文件的所有者。
Code
将以下代码添加到 .swift 文件中,并连接 .xib 文件中的出口和操作。
import UIKit
class ResuableCustomView: UIView {
let nibName = "ReusableCustomView"
var contentView: UIView?
@IBOutlet weak var label: UILabel!
@IBAction func buttonTap(_ sender: UIButton) {
label.text = "Hi"
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
guard let view = loadViewFromNib() else { return }
view.frame = self.bounds
self.addSubview(view)
contentView = view
}
func loadViewFromNib() -> UIView? {
let bundle = Bundle(for: type(of: self))
let nib = UINib(nibName: nibName, bundle: bundle)
return nib.instantiate(withOwner: self, options: nil).first as? UIView
}
}
Use it
在故事板的任何位置使用您的自定义视图。只需添加一个UIView
并将类名称设置为您的自定义类名称。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)