导航控制器推nil视图控制器错误

时间:2011-06-02 16:31:35

标签: iphone objective-c uinavigationcontroller

我的应用程序中的导航控制器出现问题。从RootViewController移动到UITableViewController工作正常。我现在想要再进行一次深入分析,以便用户从列表中选择一个项目并出现一个新屏幕,如下所示:

RootViewController --> TableViewController --> ItemViewController

我使用了切换第一个视图的完全相同的代码,但我得到了:

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

代码与第一个代码相同,那么它怎么可能是nil?

在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文件中合成它并使用代码在didSelectRowAtIndexPath:中推送新视图

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

当您点按某个项目时,我会收到上面的错误消息。有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:1)

此错误的最常见原因是无法将itemDetailViewController连接到IB中的实际对象。请注意,您通常应将IBOutlet指示符放在属性上,而不是放在ivar上。