Подтвердить что ты не робот

Xcode не может найти ссылочную раскадровку, используя Cocoapods

Я пытаюсь создать Pod с помощью CocoaPods, и я хочу связать "Demo" Storyboard, на который я могу ссылаться из Main Storyboard из моего примера приложения. Проблема в том, что Xcode дает мне следующую ошибку компилятора, когда я это делаю:

Did not find storyboard named "Demo" referenced from Main.storyboard

Смотрите:

введите описание изображения здесь

введите описание изображения здесь

В моем Podspec я включил:

s.resource_bundles = {
    'StoryboardAssets' => ['Pod/Assets/*.{storyboard,png}']
}

Вы можете найти демонстрационный репозиторий, который я создал с помощью руководства Using Pod Lib Create", вы можете найти его здесь:

https://github.com/Kukiwon/StoryboardDemo

Я запускаю CocoaPods версии 0.39.0.

Итак, каков был бы правильный способ ссылаться на раскадровку с вашего Pod? Я что-то пропустил?

4b9b3361

Ответ 1

Чтобы сослаться на раскадровку с помощью cocoapods, вы должны установить в разделе Bundle идентификатор пакета pod, как на картинке ниже:

enter image description here

И в вашем файле psspec вы должны добавить ссылку на раскадровку (как ресурс, а не как пакет)

s.resource = 'MyPod/MyStoryboardName.storyboard'

После обновления модуля все будет работать как положено

надеюсь, это поможет

Ответ 2

Файлы, включенные в динамическую структуру, внедряются в другое NSBundle в приложении. Чтобы облегчить получение раскадровки, вы можете создать вспомогательный класс внутри вашей библиотеки:

public class StoryboardHelper: NSObject {
    public static let helper = StoryboardHelper()

    public lazy var storyboard: UIStoryboard! = UIStoryboard(name: "Main", bundle: NSBundle(forClass: StoryboardHelper.self))

    public func rootController() -> UIViewController! {
        return storyboard.instantiateInitialViewController()
    }
}

NSBundle(forClass: StoryboardHelper.self) получит пучок StoryboardHelper.

Таким образом, ваш пользователь должен сделать следующее, чтобы показать контроллер корневого представления встроенной раскадровки:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    window?.rootViewController = StoryboardHelper.helper.rootController()
    window?.makeKeyAndVisible()

    return true
}