从 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 加载笔尖并将其添加为子视图。如果你需要故事板中的小视图作为容器,只需创建一个出口并将卡片视图作为子视图添加到容器中。