我的应用程序中的导航控制器出现问题。从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];
当您点按某个项目时,我会收到上面的错误消息。有谁知道为什么会这样?
答案 0 :(得分:1)
此错误的最常见原因是无法将itemDetailViewController
连接到IB中的实际对象。请注意,您通常应将IBOutlet
指示符放在属性上,而不是放在ivar上。