2016-02-19 28 views
9

Próbuję utworzyć Pod przy użyciu CocoaPods i chcę połączyć "Demo" Storyboard, które można odwołać się z Main Storyboard z mojej przykładowej aplikacji. Problemem jest to, że Xcode daje mi następujący błąd kompilatora, kiedy to zrobić:Xcode nie może znaleźć odnośnika Storyboard przy użyciu Cocoapods

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

Patrz:

enter image description here

enter image description here

W moim Podspec, ja wliczone:

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

można znaleźć repozytorium demo, który stworzyłem za pomocą „Using Pod Lib Create” przewodnika, można go znaleźć tutaj:

https://github.com/Kukiwon/StoryboardDemo

biegnę CocoaPods wersji 0.39.0.

Jaki byłby właściwy sposób odwoływania się do Storyboard z twojej kapsuły? Czy czegoś brakuje?

Odpowiedz

2

Pliki zawarte w Dynamic Framework są osadzone w innym NSBundle w aplikacji. Aby ułatwić uzyskanie ujęć, można utworzyć klasy pomocnika wewnątrz biblioteki:

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) otrzyma pakiet StoryboardHelper.

ten sposób swoją użytkownik musi tylko wykonać następujące czynności, aby pokazać swój kontroler widoku głównego osadzonego Storyboard:

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

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

    return true 
} 
+1

Dzięki, ale patrząc na demo aplikacji na GitHub, w jaki sposób ten stosuje się do mojego projektu? W twoim przykładzie tworzysz scenariusz "Główny" wewnątrz Pod, ale chcę odwołać się do scenariusza "Demo" z mojej "Głównej" Storyboard. Zastanawiałem się też, czy można to zrobić tylko za pomocą scenorysów (z odniesieniami do Storyboard w iOS9). Czy myślisz, że to możliwe? – Kukiwon

5

do odniesienia storyboard użyciu cocoapods należy ustawić w sekcji Bundle, wiązka identyfikator kapsule, jak na zdjęciu poniżej:

enter image description here

a w pliku podspec, należy dodać odwołanie swojego ujęć (jako res ródło a nie pakiet)

s.resource = 'MyPod/MyStoryboardName.storyboard'

zaktualizować swój kapsułę i wszystko będzie dobrze działa, jeśli chcesz mogę przesłać przykład w github.

nadzieję, że pomoże

+1

To zadziałało dla mnie! Z jakiegoś powodu posiadanie storyboardu w s.resource_bundles nie było wystarczająco dobre. Ale po dodaniu s.resource zadziałało! –