UINavigationController显示但没有后退按钮

时间:2012-09-28 22:10:38

标签: ios uinavigationcontroller

在我的委托课中我有这个 -

BluenibViewController *mvc = [[BluenibViewController alloc] init];
UINavigationController *unvc = [[UINavigationController alloc] init];
[unvc pushViewController:mvc animated:NO];
[mvc release];
[self.window addSubview:unvc.view];
[self.window makeKeyAndVisible];
return YES;

在我的BluenibViewController中我有这个方法 -

-(IBAction) BookingsViewController:(id)sender

{
    bookingsViewController1 = [[BookingsViewController alloc]
                              initWithNibName:@"BookingsViewController"
                              bundle:nil];

UINavigationController *navController = self.navigationController;
[navController pushViewController:bookingsViewController1 animated:YES];


self.title = @"Bookings";
[self.window makeKeyAndVisible];
[self.view addSubview:bookingsViewController1.view];
[navController release];
[bookingsViewController1 release];

}

单击此方法我可以转到下一个视图,但导航栏上没有后退按钮。

请指出我正在做的愚蠢的错误。

4 个答案:

答案 0 :(得分:2)

您不应将unvc.view添加为self.window的子视图。您应该将unvc指定为self.window.rootViewController

self.window.rootViewController = unvc;

并且您不应将bookingsViewController1.view添加为self.view的子视图(在您的BookingsViewController:方法中)。推送控制器将在您按下后将bookingsViewController1.view放到屏幕上。

答案 1 :(得分:2)

我在这里看到了很多错误。让我们看看我是否能提供某种服务。

首先,我看到你过度释放了导航控制器[navController release];

其次,您只需要在整个项目中使窗口键/可见一次。您将navController设置为窗口的rootViewController,使其成为键/可见,然后您再也不必对窗口执行任何操作。不要认为它破坏了任何东西,但你应该删除所有调用以使密钥/可见超出第一个。

最后,推送一个新的视图控制器应如下所示:

[self.navigationController pushViewController:[[[BookingsViewController alloc] init] autorelease] animated:YES];

你不需要任何其他东西来获得你想要的东西。

答案 2 :(得分:0)

self.navigationItem.hidesBackButton =YES;  

请遵守此代码。希望它有所帮助......

答案 3 :(得分:0)

它有点晚了,但在iOS 8中你可以做到:

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