【问题标题】:Load View from XIb crashes从 XIb 加载视图崩溃
【发布时间】:2017-02-16 10:27:03
【问题描述】:

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

【问题讨论】:

  • 崩溃消息是什么?
  • EXE_BAD_ACCESS 总是出现

标签: objective-c swift uiview swift3 xib


【解决方案1】:

我检查了您的代码,问题是您会将视图类提供给文件所有者,并根据它更改 IBOutlets 和 IBActions。

所以第一件事就是将“CartView”提供给 FileOwner 并将其从视图中删除。

然后从手势中删除 IBAction,从 lbl 和 img 中删除 IBOutlets,然后再次分配将引用文件所有者。

【讨论】:

    【解决方案2】:

    你做错了。您已将 xib 和情节提要中的视图的类设置为 Cart。

    尝试从 viewController 加载 nib 并将其添加为子视图。如果您需要将故事板中的小视图作为容器,只需创建一个插座并将卡片视图作为子视图添加到容器中。

    【讨论】:

    • 我认为这是从 xib 加载视图更合适的方法
    • 好的,但是如果我想创建一个 IBDesignable 类怎么办。这样我必须从 Storyboard 继承它。
    • 我认为不可能从 xib 设置 IBDesignable。您设置的图像不会反映在 IB 中
    • 不,我说的是让类成为 IBDesignable 并在 Storyboard 的 ViewController 中设置它的子类。
    【解决方案3】:

    您正在尝试像这样加载购物车

    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
         }
        }
    

    【讨论】:

    • Jason ,只是将 Cart 类添加到 File Owner 对我有用。无需在 VIewController 中添加。
    • 我看到了你的代码。将 viewController 之外的视图作为子视图加载并不是一个好方法。 @Krishnanunni 也这么说。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 2016-09-28
    • 1970-01-01
    • 2015-02-15
    • 2016-07-20
    相关资源
    最近更新 更多