2014-04-25 13 views
15

Ich erstelle einen Pod und im Ressourcen-Bundle habe ich ein Storyboard (lokalisiert).Erstellen eines benutzerdefinierten Kakao-Pods mit einem Storyboard

Beim Versuch, ein Storyboard zu instanziieren, ist ein Fehler aufgetreten: Could not find a storyboard named 'MyStoryboard' in bundle NSBundle. Der Code sieht wie folgt aus:

NSURL *bundleURL = [[NSBundle mainBundle] URLForResource:@"MyBundle" withExtension:@"bundle"]; 
NSBundle *bundle = [NSBundle bundleWithURL:bundleURL]; 
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyStoryboard" bundle:bundle]; 

MyBundle Struktur sieht wie folgt aus:

- MyBundle.bundle 
    - Base.lproj 
    - MyStoryboard.storyboard 
    - es.lproj 
    - MyStoryboard.strings 

Storyboard kann, kann in einem Bündel an erster Stelle aufgenommen werden?

Ich habe keine Pod-Beispiele mit Storyboards gesehen. Wenn du irgendwelche Pods kennst, die ihr Storyboard teilen, lass es mich auch wissen.

+0

Es gibt ein [Problem] (https://github.com/CocoaPods/CocoaPods/issues/2597) im Cocoapods Repo bekommen gelöst . Im Moment ist das nicht möglich. – dlinsin

Antwort

3

Sie möchten die Option resources. Hier sind einige Spezifikationen, die ihre enthalten:

JCAutocompletingSearch/0.9.2/JCAutocompletingSearch.podspec 
JCAutocompletingSearch/0.9.3/JCAutocompletingSearch.podspec 
JCAutocompletingSearch/0.9.4/JCAutocompletingSearch.podspec 
JCAutocompletingSearch/0.9.5/JCAutocompletingSearch.podspec 
JCAutocompletingSearch/0.9.6/JCAutocompletingSearch.podspec 
Keystone-Contacts-iOS/1.1.4/Keystone-Contacts-iOS.podspec 
LumberjackConsole/2.0.0/LumberjackConsole.podspec 
LumberjackConsole/2.0.1/LumberjackConsole.podspec 
Mixpanel/2.1.0/Mixpanel.podspec 
Mixpanel/2.2.0/Mixpanel.podspec 
Mixpanel/2.2.1/Mixpanel.podspec 
Mixpanel/2.2.2/Mixpanel.podspec 
Mixpanel/2.2.3/Mixpanel.podspec 
Mixpanel/2.3.0/Mixpanel.podspec 
Mixpanel/2.3.1/Mixpanel.podspec 
Mixpanel/2.3.2/Mixpanel.podspec 
Mixpanel/2.3.4/Mixpanel.podspec 
Mixpanel/2.3.5/Mixpanel.podspec 
OpenBLE/1.0.0/OpenBLE.podspec 
+0

Danke. Sieht so aus, als wäre es möglich, Storyboards einzubinden.Ich schaffe es, in meinen Pod aufzunehmen, aber sobald ich es lokalisiert habe (Basis-Storyboard mit Strings), funktionieren die Dinge nicht. – samwize

+0

Sie müssen auch die Strings-Dateien einschließen, wenn Sie auch die im Pod möchten. –

+0

tat ich. Es ist alles im Paket, und ich verifizierte die Struktur (siehe meinen Beitrag). – samwize

0

Ich habe derzeit das gleiche Problem hier. Während die Frage nicht selbst beantworten, würde Ich mag zusätzliche Informationen liefern, die am ehesten in Ihrem Fall gültig ist, auch:

Aufruf
NSString *path = [bundle pathForResource:@"MyStoryboard" ofType:@"storyboard"]; 
NSLog(@"path: %@",path); 

/var/mobile/Containers/Bundle/Application/_identifier_/MyApp.app/MyBundle.bundle/Base.lproj/MyStoryboard.storyboard 

dh das Storyboard gedruckt werden selbst ist gefunden, aber nicht "normal" belastbar.

10

Es gibt zwei Dinge zu beachten.

  1. Sie fügen Sie Ihre pod Ressourcen über eine vordefinierte Bündel wie

    s.resources = ["Resources/Pod.bundle"] 
    

in diesem Fall wird der Inhalt Ihres Bündels wird ohne „Weiterverarbeitung“ zu Ihrem Xcode-Projekt kopiert werden. Dies bedeutet, dass Storyboards oder XIB-Dateien nicht kompiliert werden und in Ihrem Projekt nicht verfügbar sind.

  1. Sie ausdrücklich Ihre Storyboard/nib-Dateien wie

    s.resources = ["Resources/**/*.storyboard"] 
    

In diesem Fall wird das Storyboard erstellt werden erwähnen kann und wird in Ihrem Projekt zur Verfügung stehen. Der Nachteil davon (im Moment des Schreibens) ist, dass Sie keine lokalisierten Storyboards verwenden können, da alle Storyboards am Stammort Ihres Bundles verarbeitet und kopiert werden. Storyboards mit dem gleichen Namen in verschiedenen .lproj Ordnern werden überschrieben.

0

ich mein Problem, indem Sie diese Zeile Code Bündel über diese

let bundle = Bundle(for: type(of: self)) 
Verwandte Themen