我正在使用xib加载视图,但它总是崩溃。我尝试过网上可用的不同方法但仍然崩溃。我找不到任何解决方案。我附上了代码Click here
答案 0 :(得分:1)
我已检查过您的代码,问题是您将视图类提供给文件所有者,并根据它更改IBOutlets和IBActions。
首先,将'CartView'添加到FileOwner并从View中删除它。
然后从手势中删除IBAction,从lbl和img中删除IBOutlets,然后再分配哪个将引用filesowner。
答案 1 :(得分:1)
您正试图像这样加载购物车
private func loadViewFromNib() -> UIView {
let bundle = Bundle(for: type(of: self))
let nib = UINib(nibName: "CartView", bundle: bundle)
let nibView = nib.instantiate(withOwner: self, options: nil).first as! UIView
return nibView
}
使用它加载视图绝对没有问题。问题是您不应该在视图的类中加载视图。
你必须在ViewController中完成它。像这样:
func loadCartView() -> UIView! {
if let customView = NSBundle.mainBundle().loadNibNamed("CartView", owner: self, options: nil).first as? CartView {
customView.translatesAutoresizingMaskIntoConstraints = false
return customView
} else {
return nil
}
}
SWIFT3:
func loadCartView() -> UIView! {
if let customView = Bundle.main.loadNibNamed("CartView", owner: self, options: nil)?.first as? CartView {
customView.translatesAutoresizingMaskIntoConstraints = false
return customView
} else {
return nil
}
}
答案 2 :(得分:1)
你在做什么是错的。您已将类设置为Cart的xib和storyboard中的视图。
尝试从viewController加载nib并将其添加为子视图。如果您需要在storyboard中将小视图作为容器,只需创建一个插座并将卡视图作为子视图添加到容器中。