在 Objective C 中,它可以在 init 方法中完成
-(id)init{
self = [[[NSBundle mainBundle] loadNibNamed:@"ViewBtnWishList" owner:0 options:nil] objectAtIndex:0];
return self;
}
但是当我快速执行此操作时
init(frame: CGRect) {
self = NSBundle.mainBundle().loadNibNamed("ViewDetailMenu", owner: 0, options: nil)[0] as? UIView
}
显示无法在方法中分配给自身错误。
现在我的方法是创建一个视图,并将从 nib 加载的视图添加到其中。
有人有更好的主意吗?
对于斯威夫特 4
extension UIView {
class func loadFromNibNamed(nibNamed: String, bundle: Bundle? = nil) -> UIView? {
return UINib(
nibName: nibNamed,
bundle: bundle
).instantiate(withOwner: nil, options: nil)[0] as? UIView
}
}
对于斯威夫特 3
您可以在 UIView 上创建扩展:
extension UIView {
class func loadFromNibNamed(nibNamed: String, bundle: NSBundle? = nil) -> UIView? {
return UINib(
nibName: nibNamed,
bundle: bundle
).instantiateWithOwner(nil, options: nil)[0] as? UIView
}
}
Note:使用 UINib 速度更快,因为它会为您进行缓存。
然后你可以这样做:
ViewDetailItem.loadFromNibNamed("ViewBtnWishList")
您将能够在任何视图上重用该方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)