从XIb崩溃加载视图

时间:2017-02-16 10:27:04

标签: objective-c swift uiview swift3 xib

我正在使用xib加载视图,但它总是崩溃。我尝试过网上可用的不同方法但仍然崩溃。我找不到任何解决方案。我附上了代码Click here

3 个答案:

答案 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中将小视图作为容器,只需创建一个插座并将卡视图作为子视图添加到容器中。