2014-02-12 28 views
16

我創建了一個UIViewController,我們可以將其稱爲MyViewController1。當我撥打MyViewController1時,我的所有IBOutlet都是viewDidLoad(以及其他代碼中)。我所有的IBOutlet都是零視圖.DLDLoad

當我創建這個控制器做
MyViewController1 *vc = [[MyViewController1 alloc] init]

,如果我用另一種替代MyViewController1,例如MyViewController2,它的工作原理。所以我想這個問題真的在MyViewController1

你可能想知道的最後一件事是MyViewController1實際上是MySuperViewController1的一個子類,它是UIViewController

感謝您的幫助!


編輯

我意識到我的情況是可能更復雜。這裏是我的確切文件:

// MySuperViewController1

MySuperViewController1.h 

MySuperViewController1.m 

MySuperViewController1.xib 

// MyViewController1

MyViewController1.h 

MyViewController1.m 

所以筆尖屬於超類,而不是子類。我可以這樣做嗎?

+1

'MyViewController1 * vc = [[MyViewController1 alloc] initWithNibName:@「younibname」];'嘗試一下。 – KudoCC

+0

'MyViewController1 * vc = [[MyViewController1 alloc] initWithNibName:@「MySuperViewController1」];' – KudoCC

回答

13

你應該使用:

MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"MyViewController1" bundle:nil] 

調用init不會與你的XIB文件做匹配,不會的Alloc你型動物IBOutlet

編輯:

有兩個候選條件解決方案:

首先調用超級nibName的init:

MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"MySUperViewController1" bundle:nil] 

二是調用子init方法超級initWithNibName:

-(id)init { 
    if (self = [super initWithNibName:@"MySuperViewController1" bundle:nil]) { 
     // Init 
    } 
    return self; 
} 
+0

謝謝。我編輯了我的問題:筆尖屬於超類,而不是子類。 –

+0

然後你應該可以做'MyViewController1 * vc = [[MyViewController1 alloc] initWithNibName:@「MySuperViewController1」]' – KIDdAe

+0

@NicolasRoy看到我的編輯:) – KIDdAe

0

檢查是否IBoulet與廈門國際銀行或不能正常鏈接。同時檢查你的xib的文件所有者。

如果你的類名或廈門國際銀行名稱更改 嘗試分配您正確xibName視圖控制器

MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"NibName" bundle:nil]; 
+0

謝謝。我編輯了我的問題:筆尖屬於超類,而不是子類。 –

+0

你有沒有重新命名你的班級或筆尖名字?還請檢查您的filesowner,如前所述.. – Rajesh

2

我有同樣的問題後打破了我的頭,我意識到命名廈門國際銀行相同的類名來解決我的問題。

+0

謝謝!你剛剛救了我可能會發瘋的幾個小時。 – linuxer

相關問題