在我的委托课中我有这个 -
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];
}
单击此方法我可以转到下一个视图,但导航栏上没有后退按钮。
请指出我正在做的愚蠢的错误。
答案 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];