UINavigationView问题

时间:2011-07-31 21:35:10

标签: uitableview ios4 uinavigationcontroller mkmapview

我在基于标签栏的应用中构建导航视图控制器。在控制器中,应用程序显示带有一些注释的地图视图。在导航栏上,有一个“按钮”栏。当用户按下按钮时,包含注释列表的表视图将被推入导航堆栈。在表格视图中,我还实现了自定义栏按钮,如果用户按下按钮,地图视图将弹出到导航控制器中。

问题出现了,这个应用程序工作正常,但是如果我按下“列表”按钮,并且一旦加载了tableview控制器,我按回“地图”按钮返回到地图视图,然后切换像这样的意见几次。首先视图切换正常,但经过几圈(经过几次测试后,这个数字是3),当我再次按“列表”按钮时,问题显示如下: tableview似乎被推入堆栈(从导航栏上显示的后退按钮),但tableview没有显示,它仍然是地图视图显示。如果我现在按下后退按钮,导航控制器中的根视图控制器会显示,但是当我想切换回子视图控制器(tableview控制器)时,应用程序将终止。

抱歉,我无法在此问题中插入图片,但您可以在此处查看有问题的屏幕截图: http://i.stack.imgur.com/hNYsX.png

以下是我在视图控制器之间切换的代码:

在导航视图控制器的根视图控制器中:

ListViewController *flipListViewController = [[ListViewController alloc]initWithStyle:UITableViewStylePlain];
AppDelegate *delegate = [[UIApplication sharedApplication]delegate];
UINavigationController *navController = [delegate navigationController];
//Flip Animation
[UIView beginAnimations:nil context:nil];
[navController pushViewController:ListViewController animated:NO];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:0.7];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:navController.view cache:NO];
[UIView commitAnimations];
[navController release];
[flipListViewController release];

这里我自定义了过渡动画。在子视图(表视图控制器)中,我使用以下代码弹出根视图控制器。

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.7];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO];
[self.navigationController popViewControllerAnimated:NO];
[UIView commitAnimations];

1 个答案:

答案 0 :(得分:0)

您似乎正在使用app Delegate的导航控制器,而您应该使用self.navigationController进行推送和弹出。此外,您无需使用动画块即可使用modalTransitionStyle进行翻转效果。尝试使用self.navigationController推送viewController。