2010-09-01 65 views
0

我有一个视图控制器:不能推视图入堆栈

@interface DetailViewController : UIViewController 

它显示一个地图和销被滴到此地图。当用户点击附件按钮之一时,我想要另一个视图被推送到用户面前。

由于某些原因导航控制器始终为空,当我运行下面的代码。

hotelDetailViewController = [[HotelDetailViewController alloc] initWithNibName:@"HotelDetailViewController" 
                     bundle:nil]; 

if (![self navigationController]) 
{ 
    NSLog(@"navigation controller null"); 
} 

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

我在做什么错?在哪一点我需要分配和初始化导航控制器,因为它似乎是只读的?

+0

需要一些更多的代码来显示上下文,其中navigationController定义在哪里? – 2010-09-01 15:40:17

+0

@Aaron它是'UIViewController'的属性 – 2010-09-01 15:43:36

+0

我猜测处理动作的视图控制器实际上并不在导航控制器内。也许你的DetailViewController是从其他地方嵌入的,但不是通过导航控制器的方法?关于这个事件的更多细节会很好。 – 2010-09-01 16:01:46

回答

4

在什么时候我需要分配和初始化导航控制器,因为它似乎是只读的?

嘛,你通常不会自己设置navigationController属性,通常有一个导航控制器从一开始就建立了,然后通过你的DetailViewController到导航控制器,并在属性设置这是。

“视图控制器”编程指南中关于Navigation Controllers的部分解释了如何设置导航控制器,或者使用nib文件或以编程方式。