Как я могу использовать раскадровку в Cocoa Touch Library - PullRequest
0 голосов
/ 15 июня 2019

Мне удалось создать библиотеку Cocoa Touch, которую я собираюсь использовать для представления ViewController в раскадровке, но оказывается, что я не могу получить доступ к раскадровке. Я продолжаю получать сообщение об ошибке NSInvalidArgumentException, причина: «Не удалось найти раскадровку с именем« MyStoryboard ».

let storyboard: UIStoryboard = UIStoryboard(name: "MyStoryboard", bundle: Bundle.main)
viewController.present(cryptoTransactionViewController, animated: true, completion: nil)

Ответы [ 2 ]

0 голосов
/ 15 июня 2019

раскадровка, к которой вы пытаетесь получить доступ, находится не в вашем main пакете, а в пакете фреймворка.

Итак, первое, что вам нужно сделать, это найти правильный пакет ...

let bundleId = "com.your.bundle.id"
guard let bundle = Bundle.allFrameworks.first(where: { $0.bundleIdentifier == bundleId}) else {
    fatalError("Failed to find bundle with identifier \(bundleId).")
}

let storyboard: UIStoryboard = UIStoryboard(name: "MyStoryboard", bundle: bundle)
0 голосов
/ 15 июня 2019

Здесь вы получаете доступ к раскадровке из основного комплекта приложения Bundle.main и точно не существует, поэтому сбой

let storyboard: UIStoryboard = UIStoryboard(name: "MyStoryboard", bundle: Bundle.main)

вам необходим доступ к комплекту библиотеки, поэтому попробуйте

let libBundle = Bundle(identifier:"com.library")
let storyboard: UIStoryboard = UIStoryboard(name: "MyStoryboard", bundle:libBundle)
...