2015-05-19 79 views
15

我試圖從筆尖文件創建一個UIViewController。在Google上,我發現我只能從Nib加載UIView。從「筆尖文件」加載UIViewController「

但有些人建議我可以創建一個文件所有者設置爲我們的ViewController的Nib文件(UIView)。

這就是我所做的,我沒有崩潰,但視圖只是不顯示。

編輯: 試圖推viewcontroller這樣

self.navigationController!.pushViewController(CoolViewController(), animated: true); 

但它仍然顯示當它被推

的XCode 6.3黑屏 - 不使用故事板

+0

我可以從nibs加載UIViewControllers。你可以發佈你用來嘗試加載的源代碼嗎?我也不使用故事板。 –

+0

我剛剛嘗試創建一個UIViewControler並檢查「也創建Xib」複選框。並推動它使用 self.navigationController!.pushViewController(CoolViewController(),animated:true); – JayVDiyk

回答

13

您需要分配您的ViewController,然後告訴了iOS筆尖的名稱將其初始化。

我看到你在使用Swift;恐怕我不知道迅速,只是客觀的。但這裏是如何在Objective-C中完成:

[self.navigationController pushViewController [[[CoolViewController alloc] initWithNibName: @"CoolDesign" bundle: nil] autorelease]; 

...其中「CoolDesign」是您的筆尖的基本名稱。也就是說,你在Interface Builder中創建CoolDesign.xib,Xcode將XML-text-xib編譯成CoolDesign.nib,然後告訴initWithNibName只打開@「CoolDesign」。

僅僅告訴Interface Builder設計文檔是UIViewController是不夠的。雖然原則上iOS可以找出你的意思,原則上你也可以有一個子類的多個筆尖。

+0

這不是首選。筆尖應該在不引用名稱的情況下加載。 – benjaminhallock

+0

@benjaminhallock你可以調用方法來返回nib名稱,通常我們命名爲具有相同名稱的xib文件。''NSStringFromClass([self class])' – Max

+0

@Max否,該筆尖未附帶引用。 – benjaminhallock

18

試試這個,你可以加載一個UIViewControllernibName:

Swift

self.navigationController!.pushViewController(CoolViewController(nibName: "CoolViewControllerNibName", bundle: nil), animated: true);

Objective-C的

CoolViewController*coolViewCtrlObj=[[CoolViewController alloc] initWithNibName:@"CoolViewControllerNibName" bundle:nil]; 
[self.navigationController pushViewController:coolViewCtrlObj animated:YES];