【iOS】我有三个页面A,B,C,A present 到B,B present到C,但是dismiss回到A的时候B会闪一下?

如题

我有三个页面A,B,C,A present 到B,B present到C,但是当C dismiss 到A的时候,B会闪一下,请问怎么消除??
这是我的dismiss代码:

 -(void)dismiss 
    {
        UIViewController *vc = self;
         while (![vc isKindOfClass:[BViewController class]]) {
            vc = vc.presentingViewController;
         }
         if (vc.presentingViewController)
         {
             vc = vc.presentingViewController;
         }
         [vc dismissViewControllerAnimated:NO completion:^{
          // do something
         }];
    }
阅读 6.4k
4 个回答
  1. -> A 必须是从C->B B->A这样dismiss。会闪一下应该是这个问题。个人建议B可以有navCon,然后push到C,C再dismiss。
  1. dismiss 到 A 说明你你在读书 B,C 同时 dimiss.

但是你希望只看到 C dismiss 的动画.
那你在 dismiss C 之前先 (通过委托或通知) 让 B 先 dismiss(同时动画参数设置为 false)
然后再 dismiss C

直接回退到根控制器:

/** 回退到根控制器*/
-(void)dismissToRootViewController
{
    UIViewController *vc = self;
    while (vc.presentingViewController) {
        vc = vc.presentingViewController;
    }
    [vc dismissViewControllerAnimated:YES completion:nil];
}

固定回退两个页面:


[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];

这样子?

@白龙子

我是这样

-(void)dismiss 
{
    UIViewController *vc = self;
     while (![vc isKindOfClass:[BViewController class]]) {
        vc = vc.presentingViewController;
     }
     if (vc.presentingViewController)
     {
         vc = vc.presentingViewController;
     }
     [vc dismissViewControllerAnimated:NO completion:^{
      // do something
     }];
}

可是还是会闪一下,但是不是必现,只是第一次启动App的时候会B页面会闪一下,在iOS 11上特别明显

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题