首页 > 解决方案 > 将自定义框架 xib 加载到主应用程序中引发错误

问题描述

我正在使用 QKMRZScanner,并将其添加到包装器框架中。所以我创建了一个 UIView 并命名为scanner.xib,并在我的自定义框架中使用以下方法来加载这个相机xib

 func setup() {

        mrzScannerView = (Bundle.main.loadNibNamed(nibName, owner: nil, options: nil)![0] as! QKMRZScannerView)

           mrzScannerView.frame = bounds
        mrzScannerView.autoresizingMask = [.flexibleWidth, .flexibleHeight]

           self.addSubview(self.mrzScannerView)
    }

    public func captureMRZData(){
        setup()
        mrzScannerView.delegate = self
        mrzScannerView.startScanning()

    }

正在将此scanner.framework 添加到另一个应用程序中,然后进行以下调用

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let t1 = scanner()
        t1.captureMRZData()
        // Do any additional setup after loading the view.
    }


}

但是当运行这个应用程序时,我得到了这个异常

2020-02-11 08:37:55.091905+0530 cam[41011:838242] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </private/var/containers/Bundle/Application/ED3C3AEF-DCD1-41EC-BE67-56C5655B5F8D/cam.app> (loaded)' with name 'scanner''
*** First throw call stack:
(0x1b318bab0 0x1b2ea5028 0x1b307b2fc 0x1b6efbb4c 0x1b6efc9e4 0x100955a98 0x100956388 0x100623678 0x100623760 0x1b6c29994 0x1b6c2e5c8 0x1b6c2e9b4 0x1b72a9c58 0x1b72a9354 0x1b72aa2f0 0x1b72bb4d4 0x1b74ab924 0x1b68729ac 0x1b726d370 0x1b726d700 0x1b6e08dec 0x1b8355ec0 0x1b837cb50 0x1b8360fa4 0x1b837c7e4 0x100adb27c 0x100ade9a4 0x1b83a3304 0x1b83a2fb0 0x1b83a351c 0x1b310724c 0x1b31071a0 0x1b310695c 0x1b31017d8 0x1b3101084 0x1bd34f534 0x1b7271670 0x10062479c 0x1b2f80e18)
libc++abi.dylib: terminating with uncaught exception of type NSException

请帮我加载这个

标签: iosswiftframeworksxib

解决方案


因为 QKMRZScannerView.xib 在scanner.framework 中。

它不在主包中。

您应该将代码 Bundle.main 更改为 Bundle(for: QKMRZScannerView.self)


推荐阅读