Доступ к XIB, встроенным в статический модуль - PullRequest
0 голосов
/ 18 октября 2019

Я использую cocoapods 1.8.4.

Я хочу обновить существующий модуль (я не первоначальный автор), чтобы обновить его зависимость от firebase с 4.10 до 6.10. Чтобы иметь возможность сборки, мне нужно было сделать мой модуль библиотекой statis s.static_framework = true при использовании последней версии Firebase.

Теперь, когда я пытаюсь создать экземпляр viewController, который является частью моего модуля xib. , пример вылетает:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/Imotep/Library/Developer/CoreSimulator/Devices/B165BF4E-D41E-40BE-84C3-5DC5317DB3DE/data/Containers/Bundle/Application/BFE3CA2C-5244-42B3-9237-EB6CBBE133F5/MyPod_Example.app> (loaded)' with name 'MyPodViewController'

Я пытался поместить xibs в .bundle, добавив это в мой подспец: s.resource_bundle = { 'MyPod' => [ 'MyPod/Classes/UI/*.{xib}' ] }

Знаю в основном комплекте моего примераприложение У меня правильно есть MyPod.bundle, содержащий мои перья. Но я не могу получить доступ к этим связанным перьям> <</p>

Bundle(for: MyPodViewController.self) возвращает основной пакет, а Bundle.main.path(forResource: "MyPodViewController", ofType: "nib") ничего не находит.

Как мне сделать, чтобы приложениеполучить XIBS в связке? Мне даже нужно, чтобы они были в связке? Я полностью потерян: (

1 Ответ

1 голос
/ 21 октября 2019

Да, вам нужно, чтобы они были в связке.

Ввод:

enter image description here

В вашем Podfile:

s.static_framework = true
s.resource_bundles = {
  'bundleResources' => ['staticPod/Assets/*.png', 'staticPod/Assets/*.xib']
}

Просто проверьте, нет ли у вас также записи s.resources, потому что она портит путь пакета.

В вашем быстром классе:

guard let bundleURL = Bundle.main.url(forResource: "bundleResources", withExtension: "bundle") else {
    return
}

guard let bundle = Bundle(url: bundleURL) else {
    return
}

let vc: UIViewController = UIViewController(nibName: "TestViewController", bundle: bundle)

self.present(vc, animated: true, completion: nil)

Вывод:

enter image description here

Работает, вызывается как внутри, так и снаружи модуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...