0

在我的代表课上,我有这个-

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

}

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

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

4

4 回答 4

2

我在这里看到很多错误。让我看看我是否不能提供一些服务。

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

其次,您应该只需要在整个项目中使窗口键/可见一次。您将 navController 设置为窗口的 rootViewController,使其成为键/可见,然后您就不必再对窗口做任何事情了。不要认为它会破坏任何东西,但您应该删除所有调用以使 key/visible 超出第一个。

最后,推送一个新的视图控制器应该是这样的:

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

你不应该需要任何其他东西来获得你正在寻找的东西。

于 2012-09-28T22:57:54.300 回答
2

您不应该将其添加unvc.viewself.window. 您应该分配unvcself.window.rootViewController

self.window.rootViewController = unvc;

并且您不应添加bookingsViewController1.viewself.view(在您的BookingsViewController:方法中)的子视图。导航控制器将负责bookingsViewController1.view在您按下它后进入屏幕。

于 2012-09-28T22:20:06.520 回答
0
self.navigationItem.hidesBackButton =YES;  

遵循此代码。希望能帮助到你 ....

于 2012-10-01T11:49:49.790 回答
0

它来的有点晚,但在 iOS 8 中你可以这样做:

[self.navigationController pushViewController:secondViewController animated:YES];
于 2015-04-22T06:58:55.543 回答