UINavigation控制器显示,但没有后退按钮



在我的代表类中,我有这个 -

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];

最新更新