[英]how to add xib file in static library in iOS
我試圖在靜態庫中添加xib文件或任何其他視圖控制器文件,但我不能這樣做。 你能幫我么?
如果可能請添加完整的源代碼
他們是第一個視圖上的按鈕。 當點擊該按鈕時,新的視圖控制器會出現一些東西(比如改變背景顏色)。 如何為此創建靜態庫? 這樣我可以在另一個項目中使用它?
提前致謝
如果要在構建靜態庫時使用接口構建器構建接口,則需要創建一個包並將其與庫一起分發。
在Xcode中:
然后,您需要在框架的同時編譯捆綁包。 將包添加到框架的“Target Dependencies”構建階段。
當你制作你的xib時,你就會創建你創建的新包。
然后,當您在派生數據目錄中編譯框架時,在框架二進制文件旁邊,您將找到已編譯的包。 您將此與框架二進制文件一起提供給您的第三方。
那么如何在代碼中引用此包呢? 在iOS捆綁包中無法加載,您的捆綁包實際上將在第三方的iOS應用程序主捆綁包內。 您可以在NSBundle上創建一個類別,以便從代碼中方便地訪問您的包:
@interface NSBundle (mybundle)
+(NSBundle *)myBundle;
@end
@implementation NSBundle (mybundle)
static NSBundle * _myBundle;
+(NSBundle *)myBundle{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
NSBundle * mainBundle = [NSBundle mainBundle];
NSString * pathToMyBundle = [mainBundle pathForResource:@"myBundle" ofType:@"bundle"];
NSAssert(pathToMyBundle, @"bundle not found", nil);
_myBundle = [NSBundle bundleWithPath:pathToMyBundle];
});
return _myBundle;
}
然后,您可以在代碼中訪問您的包以加載xib,如下所示:
UIViewController * controller = [[UIViewController alloc] initWithNibName:nil bundle:[NSBundle myBundle]];
請記住,如果在框架代碼中使用類別,則需要確保框架使用者將-all_load
(或-all_load
如果不使用最新的Xcode) -ObjC
到其項目中的“其他鏈接器標志”
嚴格來說,無法將Xib添加到靜態庫是正確的。 但是,有一些解決方法。 Matt Galloway的iOS Library With Resources教程將向您展示如何做到這一點。
請參閱iOS資源庫 。
XIB就像資源和靜態庫一樣,是一個包含ur類的編譯文件。 您可以說這是您准備好使用的已編譯代碼。 您無法將xib添加到靜態庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.