iPhone:更换RootViewController后pushViewController不起作用

时间:2012-01-22 18:16:03

标签: iphone objective-c uinavigationcontroller uikit

我希望在我当前的RootViewController之前放置一个屏幕。到目前为止,我对MyAppDelegate进行了以下修改:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //with this in the existing RootViewController loads correctly
    //self.window.rootViewController = self.navigationController; 
    self.window.rootViewController = [[[HomePageController alloc] init] autorelease];  
}

我不完全确定self.navigationController如何实际设置为我的RootViewController。无论哪种方式,如果我进行修改,我的HomePageController确实正确加载,但是我无法在其上推送另一个视图。我在HomePageController上有一个简单的按钮,执行以下操作(请注意HomePageController应该加载当前命名的RootViewControllerHomePageController是我想要坐在其上的视图):

RootViewController *rvC = [[[RootViewController alloc] initWithNibName:@"RootViewController" bundle:[NSBundle mainBundle]] autorelease];

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

当这段代码运行时没有任何反应......我不完全确定为什么,可能是与navigationController相关的东西?也许我没有正确地或以最佳方式将HomePageController置于RootViewController之上?

1 个答案:

答案 0 :(得分:4)

您当前没有安装navgiationController。 要修复你必须替换

self.window.rootViewController = [[[HomePageController alloc] init] autorelease];  

self.window.rootViewController = [[[UINavigatoinController alloc] initWithRootViewController:[[[HomePageController alloc] init] autorelease]] autorelease];

现在你已经安装了navigationController并且已经安装了

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

将做正确的工作。