2016-02-19 6 views
9

Ich versuche, einen Pod mit CocoaPods zu erstellen, und ich möchte ein "Demo" Storyboard bündeln, auf das ich vom Haupt-Storyboard aus meiner Beispielanwendung verweisen kann. Das Problem ist, dass Xcode gibt mir den folgenden Compiler-Fehler, wenn ich dies tun:Xcode kann kein referenziertes Storyboard mit Cocoapods finden

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

See:

enter image description here

enter image description here

In meinem Podspec, ich eingeschlossen:

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

Sie können die Demo-Repository finden, dass ich die "Using Pod Lib Create" Leitfaden erstellt, können Sie es hier finden:

https://github.com/Kukiwon/StoryboardDemo

Ich bin CocoaPods Version 0.39.0 läuft.

Also, was wäre der richtige Weg, um ein Storyboard von Ihrem Pod zu referenzieren? Fehle ich etwas?

Antwort

2

In einem Dynamic Framework enthaltene Dateien sind in der Anwendung in eine andere NSBundle eingebettet. Um es einfacher das Storyboard zu erhalten, können Sie eine Hilfsklasse innerhalb Ihrer Bibliothek erstellen:

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) wird das Bündel von StoryboardHelper erhalten.

Auf diese Weise Ihre Benutzer muss nur folgendes zeigen Sie Ihre Wurzel-View-Controller des eingebetteten Storyboard tun:

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

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

    return true 
} 
+1

Danke, aber mit Blick auf die Demo-Anwendung auf GitHub, wie würde dies für mein Projekt gelten? In Ihrem Beispiel instanziieren Sie das Storyboard "Main" im Pod, aber ich möchte auf das Storyboard "Demo" von meinem Storyboard "Main" verweisen. Außerdem habe ich mich gefragt, ob dies nur mit Storyboards (mit Storyboard-Referenzen in iOS9) möglich ist. Denkst du, dass es möglich ist? – Kukiwon

5

Storyboard mit cocoapods referenzieren, können Sie im Bundle Abschnitt setzen soll, das Bündel Kennung der Schote, wie das Bild unten:

enter image description here

Und in Ihrer podspec Datei, sollten Sie die Referenz Ihres Storyboard (als res hinzufügen ource und bündeln nicht)

s.resource = 'MyPod/MyStoryboardName.storyboard'

Aktualisieren Sie Ihre pod und alles wird funktioniert gut, wenn Sie ich will, kann ein Beispiel, bei Github hochladen.

Hoffe, dass hilft

+1

Das hat für mich funktioniert! Aus irgendeinem Grund war das Storyboard unter s.resource_bundles nicht gut genug. Aber nachdem ich die Ressource hinzugefügt habe, hat es funktioniert! –

Verwandte Themen