ios – 关闭两个模态视图控制器

前端之家收集整理的这篇文章主要介绍了ios – 关闭两个模态视图控制器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经找到了几个关于此的问题,但答案并没有解决我的问题.

我有两个使用presentModalViewController呈现的控制器.

我将modalTransitionStyle添加到主控制器调用的第一个控制器.第一个控制器正常显示第二个控制器(没有过渡样式).

FirstVC *first = [[FirstVC alloc] initWithNibName:@"FirstVC" bundle:nil];
first.modalTransitionStyle = UIModalTransitionStylePartialCurl;
[self presentModalViewController:first animated:YES];

SecondVC *second = [[SecondVC alloc] initWithNibName:@"SecondVC" bundle:nil];
[self presentModalViewController:second animated:YES];

这是我以前用于MainVC的代码

[self.presentingViewController.presentingViewController dismissModalViewControllerAnimated:YES];

这就是发生的事情:

页面没有解开.我遇到这个的原因是什么?

解决方法

在我的实验中,看起来在部分卷曲之后你不能有一个标准的演示文稿(覆盖垂直),并同时将它们两个都解除,除非你在动画设置为NO的情况下进行解雇.

解决这个问题的方法是解除没有动画的secondVC(此代码在secondVC中):

-(IBAction)dismissSelf:(id)sender {
    [self dismissViewControllerAnimated:NO completion:nil];
}

然后在firstDC中再次使用动画解除viewDidAppear,在测试控制器未显示之后:

-(void)viewDidAppear:(BOOL)animated {
    if (![self isBeingPresented]) {
        [self dismissViewControllerAnimated:YES completion:nil];
    }
}

虽然上面的代码可以回到初始控制器的视图,但您会看到firstVC的视图出现在curl uncurls之前.如果你不想看到它,那么我找到解决这个问题的唯一方法就是创建一个secondVC的图像,在解除secondVC之前将其作为(在图像视图中)添加到firstVC.所以,要做到这一点,secondVC中的代码应该是这样的(请注意,您必须链接到QuartzCore并将其导入secondVC才能使其工作):

-(void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    UIImage *img = [self imageWithView:self.view];
    FirstViewController *first = (FirstViewController *)self.presentingViewController;
    UIImageView *iv = [[UIImageView alloc] initWithFrame:first.view.bounds];
    iv.image = img;
    [first.view addSubview:iv];
}


-(IBAction)dismissSelf:(id)sender {
    [self dismissViewControllerAnimated:NO completion:nil];
}


- (UIImage *)imageWithView:(UIView *)view {
    UIGraphicsBeginImageContextWithOptions(view.bounds.size,view.opaque,[[UIScreen mainScreen] scale]);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img;
}
原文链接:https://www.f2er.com/iOS/329108.html

猜你在找的iOS相关文章