【问题标题】:popToRootViewController forward animationpopToRootViewController 前进动画
【发布时间】:2011-10-24 13:05:03
【问题描述】:

在我的库中,我有一个加载视图,它会弹出到输入视图。当用户完成输入视图时,它应该返回加载视图再次执行一些魔法,完成后它应该显示第三个视图。

现在,从可用性视图来看,我不想“滑回”到加载视图,也不想在内存中已有加载视图时分配新的加载视图。

有什么方法可以在向前滑动视图时弹出ToRootViewController? (是的,我删除了加载视图中的后退按钮)..

【问题讨论】:

    标签: objective-c ios uinavigationcontroller poptoviewcontroller


    【解决方案1】:

    好吧-也许尝试使用这样的东西

    // 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];
        }
    
        … 
        …
    }
    

    【讨论】:

      【解决方案2】:

      嗯,我想说更好的方法是以模态方式翻转视图,而不是在导航堆栈中推送/弹出。所以你会想要在你推送下一个视图控制器的输入视图中做:

      MagicViewController *magicVC = [[MagicViewController alloc] init];
      magicVC.setModalTransitionStyle  = UIModalTransitionStyleFlipHorizontal;
      [self presentModalViewController:magicVC animated:true];
      

      然后,当 Magic View 控制器完成它的魔力时,只需在该点执行(否则会弹出):

      [self dismissModalViewControllerAnimated:true];
      

      这比做简单的导航要酷得多。

      See modal view controllers guide.

      【讨论】:

      • 我同意这个答案。但是,在回答您最初的问题时,是的,您可以通过在 UINavigationController 上使用 viewControllers 和 setViewController:animated 属性来“强制”前进动画。
      • Thnx,是的,我也想过,但从用户体验的角度来看,它不适合我的流程,只会让用户感到困惑。我正在尝试使用设置视图控制器来尝试@macross 的建议。 mackross,你应该添加你的建议作为答案,因为它就是这样;)
      猜你喜欢
      • 1970-01-01
      • 2011-11-27
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 2023-03-24
      相关资源
      最近更新 更多