2011-04-27 178 views
2

我有一个使用UINavigation的游戏设置屏幕,我试图重置或清除UINavigation一旦一个人选择了一种颜色。如何清除或重置UINavigation历史记录?

我的应用程序的当前进程可以在下面的图中最好的描述:

Start application -> New game -> Pick character -> Pick Color -> Start game 

直到“选取颜色”我用的是UINavigation,然而,当一个颜色挑选我想清除UINavigation历史。

这样做的原因是,一旦你开始游戏,你就不能回去,并且希望UINavigation在没有迹象表明你可以回去的情况下进行清理(这还包括回到屏幕main menu)。

我现在这样做的方式就是这样;

[self.navigationController popToRootViewControllerAnimated:YES]; 

GameDashboardVC *dashboard = [[GameDashboardVC alloc] initWithNibName:@"GameDashboardVC" bundle:nil]; 
dashboard.title = @"Dashboard"; 
dashboard.managedObjectContext = self.managedObjectContext; 

[self.navigationController pushViewController:dashboard animated:YES]; 

[dashboard release]; 

问题是,它弹出到rootViewController,但它从不会将仪表板推到堆栈上。

我已经试过:

[self.parentViewController.navigationController pushViewController....] 

我没有试过是把我的仪表盘推根视图控制器本身里面,但我担心,因为我不知道如果它甚至应该是唯一那里。

因此,哪里是放这种功能的正确位置,以及如何清除UINavigation的堆栈。

谢谢你的时间/帮助。

+0

通过你的UINavigationController viewControllers财产,扔掉你不想要的人? – onnoweb 2011-04-27 18:06:41

+0

我会尽力表示感谢。 – zardon 2011-04-28 05:50:31

回答

1

我现在解决了这个问题让我满意。

我把下面的代码我initWithNibName方法中:

self.navigationItem.hidesBackButton = YES; 

这个隐藏后退按钮和我没有弹出任何东西,但我觉得对于内存的原因可能是保持有用的想法从堆栈中删除不必要的物品。

但现在上面会做。

+0

我做了另一个解决方案,我把所有的“新游戏初始化”东西放入一个模态视图中,并用它自己的uinavigation。模态观点的方式也是一样,可以被认为是更合乎逻辑的。唯一的问题是当你删除模式并将主菜单视图推入堆栈。话虽如此,无论哪种方式似乎都行得通。 – zardon 2011-05-03 18:50:09

1

如果要重置UINavigation历史记录,请重新初始化导航控制器。

如果您使用AppDelegate类中的UINavigationController。您可以重新初始化导航历史记录。

appDelegate.navigationController = [[UINavigationController alloc] init];

上面的代码将重置navigationController历史..