iOS 关于Presenting view controllers on detached view controllers is discouraged的警告
2016-01-26 13:32
489 查看
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
[self presentViewController:picker animated:YES completion:nil];
换成
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
[delegate.window.rootViewController presentViewController:picker animated:YES completion:^{
}];
理论上是允许从一个控制器present到另外一个控制器,再从这个控制器present另外一个控制器.
我在网上查了有个大神这样解释的:
一般来说我们呈现一个viewcontroller 里面的内容,经常采用的方式是用navigationcontroller与tabbarcontroller来管理视图控制器。在这种情况下,呈现的视图控制器都在一个app维护的控制器堆栈里面。
而有一种情况就是通过self.view addsubview:AviewController.view也可以呈现出某个视图控制器。这种情况虽然看上去跟 push的结果没什么不同,但是实际上这个被呈现的view的controller并没有在当前app的视图堆栈里,也就是所谓的
detachviewcontroller,如果你在这个分离之外的视图控制器里面做present 调用,就会出现上述问题。
所以判定是否为分离视图,就是看它是不是处在当前app的控制器堆栈里面。
显然app的 rootviewcontroller 当然是处于堆栈里,并且是堆栈最底层的视图控制器。所以这种解决方案在一定程度上是可行的。
[self presentViewController:picker animated:YES completion:nil];
换成
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
[delegate.window.rootViewController presentViewController:picker animated:YES completion:^{
}];
理论上是允许从一个控制器present到另外一个控制器,再从这个控制器present另外一个控制器.
我在网上查了有个大神这样解释的:
一般来说我们呈现一个viewcontroller 里面的内容,经常采用的方式是用navigationcontroller与tabbarcontroller来管理视图控制器。在这种情况下,呈现的视图控制器都在一个app维护的控制器堆栈里面。
而有一种情况就是通过self.view addsubview:AviewController.view也可以呈现出某个视图控制器。这种情况虽然看上去跟 push的结果没什么不同,但是实际上这个被呈现的view的controller并没有在当前app的视图堆栈里,也就是所谓的
detachviewcontroller,如果你在这个分离之外的视图控制器里面做present 调用,就会出现上述问题。
所以判定是否为分离视图,就是看它是不是处在当前app的控制器堆栈里面。
显然app的 rootviewcontroller 当然是处于堆栈里,并且是堆栈最底层的视图控制器。所以这种解决方案在一定程度上是可行的。
相关文章推荐
- [IOS 开发] 无限后台运行
- iOS中的三大事件
- iOS开发流程总结
- ios定位当前城市
- iOS Provisioning Profile(Certificate)与Code Signing详解
- iOS学习之VFL语言简介
- iOS开发时间戳与时间,时区的转换,汉字与UTF8,16进制的转换
- xcode7.2不能真机调试ios9.2.1系统设备的解决方法
- iOS取出手机里的所有图片 ---简单的方法
- iOS字符串解析---》字典
- iOS中edgesForExtendedLayout与automaticallyAdjustsScrollViewInsets
- SetNeedsLayout
- NSString的格式化大全iOS开发中高级
- iOS-彻底了解iOS字体相关知识
- iOS 关于TabviewController的那些事儿~
- ios 将时间戳转为时间类型
- 超全!整理常用的iOS第三方资源
- iOS CoreImage 实现二维码生成和识别
- IOS开发中的几种设计模式介绍
- iOS 页面跳转三种方式(参考)