2016-02-19 25 views
9

Sto provando a creare un pod utilizzando CocoaPods e desidero raggruppare uno storyboard "Demo" a cui posso fare riferimento dallo storyboard principale dalla mia applicazione di esempio. Il problema è che Xcode mi dà il seguente errore del compilatore quando faccio così:Xcode non trova riferimenti Storyboard utilizzando Cocoapods

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

See:

enter image description here

enter image description here

Nel mio Podspec, ho incluso:

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

È possibile trovare il repository demo che ho creato utilizzando il "Using Pod Lib Create" guida, si può trovare qui:

https://github.com/Kukiwon/StoryboardDemo

sto correndo CocoaPods versione 0.39.0.

Quindi quale sarebbe il modo corretto di fare riferimento a uno Storyboard dal Pod? Mi sto perdendo qualcosa?

risposta

2

I file inclusi in un Dynamic Framework sono incorporati in un diverso NSBundle nell'applicazione. Per rendere più facile per ottenere la storyboard, è possibile creare una classe di supporto all'interno tua libreria:

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) otterrà il fascio di StoryboardHelper.

In questo modo, l'utente ha solo bisogno di fare quanto segue per mostrare la visualizzazione principale regolatore dello storyboard incorporato:

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

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

    return true 
} 
+1

Grazie, ma guardando l'applicazione demo su GitHub, come sarebbe questo si applica al mio progetto? Nel tuo esempio, istanzia lo storyboard "Principale" all'interno del Pod, ma voglio fare riferimento allo storyboard "Demo" dal mio Storyboard "Principale". Inoltre, mi chiedevo se questo può essere fatto solo usando Storyboard (con riferimenti Storyboard in iOS9). Pensi che sia possibile? – Kukiwon

5

Per riferimento storyboard usando cocoapods, è necessario impostare nella sezione Fascio, il bundle identificatore del baccello, come l'immagine qui sotto:

enter image description here

E nel file podspec, si dovrebbe aggiungere il riferimento del vostro storyboard (come res ource e non raggruppare)

s.resource = 'MyPod/MyStoryboardName.storyboard'

Aggiornare il vostro pod e tutto andrà funziona bene, se vuoi posso caricare un esempio in github.

Speranza che aiuta

+1

Questo ha funzionato per me! Per qualche ragione avere lo storyboard sotto s.resource_bundles non era abbastanza buono. Ma dopo aver aggiunto il problema, ha funzionato! –