在目标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 }
不能在方法中分配给自身,将显示错误。现在,我的方法是创建一个视图,并将从笔尖加载的视图添加到其中。有人有更好的主意吗?
对于Swift 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 } }
对于Swift 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 } }
注意 :使用UINib更快,因为它可以为您缓存。
然后,您可以执行以下操作:
ViewDetailItem.loadFromNibNamed("ViewBtnWishList")
您将能够在任何视图上重用该方法。