сбой моего пользовательского фреймворка 'Не удалось загрузить NIB в комплекте - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть пользовательский фреймворк, который включает в себя один xib и класс UIView для одного и того же.

при подключении моего тестового приложения к фреймворку, оно зависло

 *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </private/var/containers/Bundle/Application/10A66571-E4BA-4C82-BDCE-82DA8018CA1C/cam.app> (loaded)' with name 'scanner''
*** First throw call stack:
(0x1b318bab0 0x1b2ea5028 0x1b307b2fc 0x1b6efbb4c 0x1b6efc9e4 0x104902338 0x104901e68 0x104902078 0x1048a7c60 0x1048a74d8 0x1048a740c 0x1048a7514 0x1b6c29994 0x1b6c2e5c8 0x1b6c2e9b4 0x1b72a9c58 0x1b72a9354 0x1b72aa2f0 0x1b72bb4d4 0x1b74ab924 0x1b68729ac 0x1b726d370 0x1b726d700 0x1b6e08dec 0x1b8355ec0 0x1b837cb50 0x1b8360fa4 0x1b837c7e4 0x104cab27c 0x104cae9a4 0x1b83a3304 0x1b83a2fb0 0x1b83a351c 0x1b310724c 0x1b31071a0 0x1b310695c 0x1b31017d8 0x1b3101084 0x1bd34f534 0x1b7271670 0x1048a867c 0x1b2f80e18)
libc++abi.dylib: terminating with uncaught exception of type NSException

мой фреймворк code

import UIKit
import QKMRZScanner
public class scanner: UIView,QKMRZScannerViewDelegate {

    @IBOutlet var mrzScannerView: QKMRZScannerView!

    public func mrzScannerView(_ mrzScannerView: QKMRZScannerView, didFind scanResult: QKMRZScanResult) {
        print(scanResult.documentType)
    }

    override  init(frame: CGRect) {
        super.init(frame: frame)
        commitinit()
        mrzScannerView.delegate = self
    }


    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    private func commitinit(){
        Bundle.main.loadNibNamed("scanner", owner: self, options: nil)
        addSubview(mrzScannerView)
        mrzScannerView.frame = self.bounds
        mrzScannerView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
    }

    public func capture(){
        mrzScannerView.startScanning()
    }


}


код моего тестового приложения ниже

import UIKit

import testfrme
class ViewController: UIViewController {

    @IBOutlet weak var tt: scanner!
    override func viewDidLoad() {
        super.viewDidLoad()
        let d = scanner()
        d.capture()

    }


}




Может кто-нибудь помочь мне понять, почему его сбой ?? полный исходный код обоих доступен здесь код testapp каркасный код

обновлено:

new cra sh скриншот enter image description here

ОБНОВЛЕНО:

Когда я пытался

        mrzScannerView = Bundle(for: QKMRZScannerView.self).loadNibNamed("QKMRZScannerView", owner: self, options: nil)


получаю ошибку ниже ! Введите изображение описание здесь ] 3

Мои xib-подключения выглядят так enter image description here

enter image description here

1 Ответ

1 голос
/ 11 февраля 2020

Убедитесь, что ваш сканер просматривает перо в точности как «сканер».
Не устанавливайте в перьях TopView тип «сканер». Вместо этого установите для filesOwner значение «scanner».
Добавьте подпредставление для своего пера, установите для этого класса представлений значение «QKMRZScannerView».
Подключите это представление к своему @IBOutlet var mrzScannerView

Загрузите перо таким образом, как это :

func commitinit() {  
    let nib = UINib(nibName: String(describing: self), bundle: Bundle(for: type(of: self))) 

    guard let view = nib.instantiate(withOwner: self, options: nil).first as? UIView else {
        fatalError("Failed to instantiate nib \(nib)")
    }
    self.addSubview(view)
    view.frame = self.bounds
    view.autoresizingMask = [.flexibleHeight, .flexibleWidth]
}
...