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

ios – 关闭两个模态视图控制器,第1张

概述我已经找到了几个关于此的问题,但答案并没有解决我的问题. 我有两个使用presentModalViewController呈现的控制器. 我将modalTransitionStyle添加到主控制器调用的第一个控制器.第一个控制器正常显示第二个控制器(没有过渡样式). FirstVC *first = [[FirstVC alloc] initWithNibName:@"FirstVC" bundl 我已经找到了几个关于此的问题,但答案并没有解决我的问题.

我有两个使用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;}
总结

以上是内存溢出为你收集整理的ios – 关闭两个模态视图控制器全部内容,希望文章能够帮你解决ios – 关闭两个模态视图控制器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1095315.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存