在我的库中,我有一个加载视图,它会弹出到输入视图。当用户完成输入视图时,它应该返回加载视图再次做一些魔术,完成后它应该显示第三个视图。
现在,从可用性视图来看,我不想“滑回”到加载视图,也不想在内存中已经有一个加载视图时分配新的加载视图。
有什么方法可以在向前滑动视图时弹出ToRootViewController?(是的,我删除了加载视图中的后退按钮)..
在我的库中,我有一个加载视图,它会弹出到输入视图。当用户完成输入视图时,它应该返回加载视图再次做一些魔术,完成后它应该显示第三个视图。
现在,从可用性视图来看,我不想“滑回”到加载视图,也不想在内存中已经有一个加载视图时分配新的加载视图。
有什么方法可以在向前滑动视图时弹出ToRootViewController?(是的,我删除了加载视图中的后退按钮)..
嗯,我想说更好的方法是以模态方式翻转视图,而不是在导航堆栈中推送/弹出。因此,您希望在推送下一个视图控制器的输入视图中执行以下操作:
MagicViewController *magicVC = [[MagicViewController alloc] init];
magicVC.setModalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:magicVC animated:true];
然后,当 Magic View 控制器完成其魔法时,只需在该点执行(否则会弹出):
[self dismissModalViewControllerAnimated:true];
这比做简单的导航要酷得多。
好的 - 也许尝试使用这样的东西
// This goes in whatever view controller you want to pop with
- (void)popToRootWithForwardAnimation
{
NSMutableArray * viewControllers = [[[self.navigationController viewControllers] mutableCopy] autorelease]
UIViewController * rootViewController = [viewControllers objectAtIndex:0]
[viewControllers removeObjectAtIndex:0]; // try using with and without this line?
[viewControllers addObject:rootViewController];
[self.navigationController setViewControllers:viewControllers animated:YES];
}
// This goes in the root view controller
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated]
NSMutableArray * viewControllers = [[[self.navigationController viewControllers] mutableCopy] autorelease]
if ([viewControllers count] > 1)
{
[viewControllers removeAllObjects];
[viewControllers addObject:self];
[self.navigationController setViewControllers:viewControllers animated:NO];
}
…
…
}