如何解散modalViewController的modalViewController
来源:互联网 发布:开一家淘宝店的成本 编辑:程序博客网 时间:2024/05/07 23:09
一个View Controller A,弹出了一个Modal View Controller B,B又弹出了一个Modal ViewController C⋯⋯and so on。
如果你在第n个Modal View Controller的时候,想回到第一个View Controller A,或者它前面的第m个ModalView Controller C,那怎么办?
你一定想,一层层地解散呗。没错,我一开始也是这样干的:在C里解散D,在B里解散C,在A里解散B。那么你会获得一个“试图解散当前未显示的View Controller”错误。
苹果的思维非同凡响,其实你只需要解散一个Modal View Controller就可以了。即处于最底层的View Controller,这样处于这个层之上的ModalView Controller统统会被解散。
例如:你只用在A中解散B,则C、D、E、F……统统会自动被解散了。
问题在于,你在F中如何获得A? 如果是iOS 4,你可以使用parentViewController来获得当前Modal ViewController的“父View Controller”并解散自己。如果是iOS 5,你就得用presentingViewController了。
这样,你可以不停地parentViewController.parentViewController.parentViewController 下去就可以了。
代码:
if ([self respondsToSelector:@selector(presentingViewController)]) {
[self.presentingViewController.presentingViewControllerdismissModalViewControllerAnimated:YES]; // for IOS 5+
} else {
[self.parentViewController.parentViewControllerdismissModalViewControllerAnimated:YES]; // for pre IOS 5
}
问题是,有时候你不好确定当前Modal View Controller是链中的哪一级。比如有一个工作流,它在B处有两个分支,一个是A->B->C->D,一个是A->B->D,走哪一个分支,依赖于用户的选择。不管D或者F,处理完之后都要返回到A来进行刷新。
在D这个地方要返回A时,你不好决定要用几个parentViewController才能返回A。因为可能是3个(分支1),也可能是2个(分支2)。这样的情况下你只有用协议或者委托了。把A作为一个delegate,沿着工作流不停地传递下去,这样不管走分支1还是分支2的流程,D都始终有一个A的引用。当D的工作完成时,直接调用A实现的协议方法,在A的这个方法中解散B就可以了。- 如何解散modalViewController的modalViewController
- iOS 如何dismiss所有modalViewController
- ModalViewController和单例的使用
- 利用ModalViewController切换View
- 利用ModalViewController切换View
- 【转】UINavigationController 和 ModalViewController
- 用ModalViewController切换View
- ModalViewController 透明背景代码
- iOS: 利用ModalViewController切换View
- IOS学习 ModalViewController模态视图的创建 两视图间用代理方式<传值>
- iPhone开发进阶--- 利用ModalViewController切换View
- iPhone开发之利用ModalViewController切换View
- iPhone开发进阶--利用ModalViewController切换View
- iPhone开发之ModalViewController视图切换
- iPhone开发之利用ModalViewController切换View
- iPhone开发之利用ModalViewController切换View
- iPhone开发进阶(7)— 利用ModalViewController切换View
- iPhone开发进阶(7)--- 利用ModalViewController切换View
- 酱油HADOOP 1
- iPhone应用程序编程指南-图形和描画
- javaScript 验证 电话号码(包含 手机和座机) 和邮箱验证
- C# 泛型
- ScrollView/HorizontalScrollView常用技巧,附源码
- 如何解散modalViewController的modalViewController
- nose基础
- 只设置hidden:true时会显示出来一个:的标签(extjs生成的lable标签在IE6下会有:标签)
- Delete the System Apps by adb
- 文件的查找定位
- 理解SNMP协议(一)
- 为Android应用程序读取/dev下设备而提权1
- 怎么样 下载 android 4.0源码,教你一下
- Wireshark