在我的代表类中,我有这个 -
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];
}
单击此方法,我可以转到下一个视图,但导航栏上没有后退按钮。
请指出我正在犯的愚蠢错误。
我在这里看到很多错误。 让我们看看我是否不能提供一些服务。
首先,我看到您过度释放了导航控制器 [navController 释放];
其次,您应该只需要在整个项目中使窗口键/可见一次。 您将 navController 设置为窗口的根视图控制器,使其成为键/可见,然后您就不必再对窗口执行任何操作。 不要认为它破坏了任何东西,但您应该删除所有调用以使密钥/可见超出第一个。
最后,推送新的视图控制器应如下所示:
[self.navigationController pushViewController:[[[BookingsViewController alloc] init] autorelease] animated:YES];
您不需要任何其他东西来获得所需的内容。
不应将unvc.view
添加为 self.window
的子视图。 您应该将unvc
分配为self.window.rootViewController
:
self.window.rootViewController = unvc;
并且不应将bookingsViewController1.view
添加为self.view
的子视图(在BookingsViewController:
方法中)。 导航控制器将负责在您推动屏幕后bookingsViewController1.view
到屏幕上。
self.navigationItem.hidesBackButton =YES;
按照此代码进行操作。希望它有帮助....
来得有点晚,但在iOS 8中你可以做到:
[self.navigationController pushViewController:secondViewController animated:YES];