Использование перьев от Cocoapods в Swift 4 - PullRequest
0 голосов
/ 21 ноября 2018

Я создал фреймворк, содержащий функцию, которая отображает вид входа в систему в соответствии с xib, который содержится в этом фреймворке.И xib-файл, и swift-файл для представления называются AuthenticationViewController

Однако, когда я пытаюсь использовать эту функцию в другом проекте, который использует ее в качестве модуля, происходит сбой с сообщением «Не удалось загрузить NIB в комплекте».. (еще не загружен) 'с именем' AuthenticationViewController '"

Представление отображается следующим кодом, который находится в моем модуле / фреймворке:

func authenticate(viewController: UIViewController){
    let bundle = Bundle(for:AuthenticationViewController.self)
    let newViewController = AuthenticationViewController(nibName:"AuthenticationViewController" , bundle: bundle)

    viewController.present(newViewController, animated: true, completion: nil)
}

В чем проблемаВот?Должен ли быть отдельный пакет для моего модуля, потому что при вызове я получаю только один пакет:

Bundle.allBundles

Мой файл .podspec содержит следующий раздел:

s.resource_bundles = {
"MyPodName" => ["MyPodName/*.xib"]

}

но я попытался загрузить комплект, используя:

Bundle(identifier:"MyPodName")

, и это тоже не работает.

Как вы должны использовать перья из стручков?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Проблема заключалась в том, что я использовал:

s.resource_bundles = {
"MyPodName" => ["MyPodName/*.xib"]
}

Это, похоже, не работает с подходом, который я использовал.Поэтому мне пришлось изменить файл podspec на:

s.resources = ["MyPodName/*.xib"]

Это заставило все работать

0 голосов
/ 21 ноября 2018

Мне кажется, что пакет не правильный.Я использую эту функцию в своей библиотеке pod, чтобы получить пакет

- (NSBundle *)getBundle {
    NSBundle *podBundle = [NSBundle bundleForClass:self.classForCoder];
    NSURL *podBundleURL = [podBundle URLForResource:@"MyPodName" withExtension:@"bundle"];
    NSBundle *bundle = [[NSBundle alloc] initWithURL:podBundleURL];
    return bundle;
}

Когда у вас есть пакет, вы можете загрузить представление.Также запустите установку pod после того, как вы отредактируете .podspec и добавите новый файл для реорганизации файлов.

...