簡體   English   中英

創建一個帶有故事板的自定義可可豆莢

[英]Creating a custom cocoa pod with a storyboard in it

我正在創建一個pod,在資源包中我有一個故事板(本地化)。

當我嘗試實例化故事板時,發生了錯誤: Could not find a storyboard named 'MyStoryboard' in bundle NSBundle 代碼如下所示:

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

MyBundle結構如下所示:

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

故事板可以首先包含在一個包中嗎?

我還沒有看過包含故事板的Pod的例子。 如果你知道任何分享他們的故事板的pod,也請告訴我。

要記住兩件事。

  1. 您可以通過預定義的捆綁包添加您的pod資源

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

在這種情況下,您的包的內容將被復制到您的xcode項目,而無需任何“進一步處理”。 這意味着故事板或xib文件將不會被編譯,也不會在您的項目中可用。

  1. 你可以明確提到你的storyboard / nib文件

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

在這種情況下,故事板將被編譯並將在您的項目中可用。 這個(在撰寫本文時)的缺點是您無法使用本地化的故事板,因為所有故事板都將在您的捆綁包的根位置進行處理和復制。 因此,將覆蓋在不同.lproj文件夾中具有相同名稱的故事板。

你想要resources選項。 以下是一些包括他們的規格:

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

我目前在這里有同樣的問題。 雖然我沒有自己回答這個問題,但我還想提供最有可能在您的案例中有效的其他信息:

調用

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

將打印

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

即故事板本身被找到,但不能加載“正常方式”。

我通過使用此行代碼來解決我的問題

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM