【发布时间】:2017-02-16 10:27:03
【问题描述】:
我正在使用 xib 加载视图,但它总是崩溃。我尝试了网上可用的不同方法,但它仍然崩溃。我没有找到任何解决方案来处理。我附上了代码供参考Click here
【问题讨论】:
-
崩溃消息是什么?
-
EXE_BAD_ACCESS 总是出现
标签: objective-c swift uiview swift3 xib
我正在使用 xib 加载视图,但它总是崩溃。我尝试了网上可用的不同方法,但它仍然崩溃。我没有找到任何解决方案来处理。我附上了代码供参考Click here
【问题讨论】:
标签: objective-c swift uiview swift3 xib
我检查了您的代码,问题是您会将视图类提供给文件所有者,并根据它更改 IBOutlets 和 IBActions。
所以第一件事就是将“CartView”提供给 FileOwner 并将其从视图中删除。
然后从手势中删除 IBAction,从 lbl 和 img 中删除 IBOutlets,然后再次分配将引用文件所有者。
【讨论】:
你做错了。您已将 xib 和情节提要中的视图的类设置为 Cart。
尝试从 viewController 加载 nib 并将其添加为子视图。如果您需要将故事板中的小视图作为容器,只需创建一个插座并将卡片视图作为子视图添加到容器中。
【讨论】:
您正在尝试像这样加载购物车
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
}
}
【讨论】: