2015-10-14 51 views
0

我是一名新的iOS開發人員。我必須開發一個靜態庫。我有很多視圖控制器,它們之間的流程是使用故事板來定義的。我從我的項目中創建了兩個目標。一個是靜態庫,另一個是捆綁。我用我的包裹來包含我的故事板。我已經使用這段代碼從storybaord啓動我的第一個viewcontroller。使用故事板在iOS中開發靜態庫

-(void)showFromViewController:(UIViewController *)vc{ 
    NSBundle * bundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"storyBoards" withExtension:@"bundle"]]; 
    UIStoryboard * libStoryBoard = [UIStoryboard storyboardWithName:@"Main1" bundle:bundle]; 
    ViewController1 * viewController = [libStoryBoard instantiateViewControllerWithIdentifier:@"ViewController1"]; 
    [vc presentViewController:viewController animated:YES completion:NULL]; 
} 

vc是調用此函數的ViewController。

是的,ViewController具有靜態庫的目標成員資格。

但包括「一個」,而在另一個項目「.bundle」,並呼籲上述功能之後,它拋出在控制檯登錄錯誤。

Unknown class ViewController1 in Interface Builder file.

任何人都可以建議使用故事板的靜態庫一起meright方式。如果是,那麼你能否指出從靜態庫中包含類的故事板啓動第一個視圖控制器的正確方法。

+0

你確定你正在得到正確的包嗎? '[NSBundle bundleForClass:[ViewController1 class]]' – nhgrif

+0

是的,我想。因爲如果我直接在靜態庫中使用storybaord並參考電子郵件包中的故事板,它仍會拋出相同的錯誤。 – hcnimkar

+0

它不會在主要包中。 – nhgrif

回答

0

簡單,你可以瀏覽這樣

LoginViewController *loginVC=[self.storyboard instantiateViewControllerWithIdentifier:@"loginView"]; 
[self presentViewController:loginVC animated:YES completion:nil]; 
+0

我做了同樣的事情。由於我在不同的項目中使用.a和故事板,我必須從包中取回故事板。 – hcnimkar

+0

我沒有得到你的意思的上述評論。 – hcnimkar

+0

NSURL * url = [[NSBundle mainBundle] URLForResource:@「index」withExtension:@「html」subdirectory:@「websiteDir」]; NSURLRequest * request = [NSURLRequest requestWithURL:url]; [self.webView loadRequest:request]; –

0

我有一個類似的設置。我有我的主項目,我有一個ModelController子項目,它有一個靜態庫和一個資源包,用於我的主項目。

我創建故事板並測試視圖控制器和使用上述你的方法來加載。

可能趕你出去是在靜態庫>目標>打造階段>複製標題>確保您添加ViewController1.h文件放入這個名單的唯一的東西。

除此之外,一切工作正常。

+0

你能指出爲什麼那麼重要嗎?因爲我試過這樣做仍然會出現同樣的錯誤。我想這個錯誤是因爲ViewController1.m沒有被加載到內存中。 – hcnimkar