从 XIb 加载视图崩溃
Load View from XIb crashes
我正在使用 xib 加载视图,但它总是崩溃。我已经尝试了网上可用的不同方法,但仍然 crashes.I 没有找到任何解决方案来处理。我附上代码供参考Click here
我检查了你的代码,问题是你会将你的观点 class 提供给文件所有者,并根据它更改 IBOutlets 和 IBActions。
所以第一件事就是将“CartView”提供给 FileOwner 并将其从视图中删除。
然后从 gesture 中删除 IBAction,从 lbl 和 img 中删除 IBOutlets,然后再次分配将引用文件所有者。
您正在尝试像这样加载购物车
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
}
加载视图绝对没有问题。问题是您不应该在视图 class 内加载视图。
你必须在 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
}
}
你的做法是错误的。您已将 xib 和故事板中的视图的 class 设置为购物车。
尝试从 viewController 加载笔尖并将其添加为子视图。如果你需要故事板中的小视图作为容器,只需创建一个出口并将卡片视图作为子视图添加到容器中。
我正在使用 xib 加载视图,但它总是崩溃。我已经尝试了网上可用的不同方法,但仍然 crashes.I 没有找到任何解决方案来处理。我附上代码供参考Click here
我检查了你的代码,问题是你会将你的观点 class 提供给文件所有者,并根据它更改 IBOutlets 和 IBActions。
所以第一件事就是将“CartView”提供给 FileOwner 并将其从视图中删除。
然后从 gesture 中删除 IBAction,从 lbl 和 img 中删除 IBOutlets,然后再次分配将引用文件所有者。
您正在尝试像这样加载购物车
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
}
加载视图绝对没有问题。问题是您不应该在视图 class 内加载视图。
你必须在 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
}
}
你的做法是错误的。您已将 xib 和故事板中的视图的 class 设置为购物车。
尝试从 viewController 加载笔尖并将其添加为子视图。如果你需要故事板中的小视图作为容器,只需创建一个出口并将卡片视图作为子视图添加到容器中。