2011-06-02 124 views
1

我在我的應用程序導航控制器有一些問題。從RootViewController移到UITableViewController工作正常。我現在想有明細的一個多層次,讓用戶從列表中選擇一個項目,就會出現一個新的屏幕,這樣的:導航控制器推零視圖控制器錯誤

RootViewController --> TableViewController --> ItemViewController

我用的是切換第一的觀點完全相同的代碼,但我得到:

Application tried to push a nil view controller on target <UINavigationController...

的代碼是相同的第一個,所以怎麼能說是零?

在RootViewController.h:

@interface RootViewController : UIViewController { 
    IBOutlet TableViewController *tableViewController; 
} 

@property (nonatomic, retain) TableViewController * tableViewController; 

在.m文件我合成屬性,然後使用一個按鈕來調用:

[self.navigationController pushViewController:tableViewController animated:YES];

在TableViewController.h:

#import "ItemDetailViewController.h" 

@class TableViewController; 

@interface TableViewController : UITableViewController { 
    IBOutlet ItemDetailViewController * itemDetailViewController; 
} 

@property (nonatomic, retain) ItemDetailViewController * itemDetailViewController; 

@end 

再次,我在.m文件中綜合它並使用co日推新視圖didSelectRowAtIndexPath:

[self.navigationController pushViewController:itemDetailViewController animated:YES];

當你對一個項目我收到上述錯誤信息挖掘。有誰知道爲什麼會發生這種情況?

+0

'itemDetailViewController'和'plantDetailViewController'之間的連接是什麼? – Tejas 2011-06-02 16:33:51

+0

對不起,錯字!更改名稱以使其更易於閱讀。 – ThisDarkTao 2011-06-02 16:35:42

+0

你有多少個筆尖? – sergio 2011-06-02 16:40:52

回答

1

此錯誤的最常見原因是未能將itemDetailViewController連接到IB中的實際對象。請注意,您通常應該將IBOutlet指示符放在屬性上,而不是在伊娃上。

+0

所有連接都按照RootViewController連接,並且所有連接都在那裏並且正確。然而,我將切換IBOutlet指示符,也許是它的? – ThisDarkTao 2011-06-02 16:37:28

+0

在調試器中,itemDetailViewController是否爲零?它是否在'TableViewController viewDidLoad'中?如果是這樣,那麼你沒有連接到你認爲你連接到的東西。 – 2011-06-02 17:19:15

+0

我該如何檢查?你的意思是使用儀器並檢查內存分配嗎? – ThisDarkTao 2011-06-02 18:15:38

相關問題