我有两个使用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 – 关闭两个模态视图控制器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)