present的时候是可以直接回到第一个viewcon的
来源:互联网 发布:上交所龙虎榜数据 编辑:程序博客网 时间:2024/05/30 04:41
最新:我并没有记错,是可以直接回到的 [self.presentingViewController.presentingViewControllerdismissModalViewControllerAnimated:YES];
如:A present B 然后B present C
现在想在C里实现方法,能直接回到A,我原以为有类似的方法呢:self.parentviewcontroller dismiss.........
谁知刚才试了下不行,后来问群里的兄弟 说我可以是记错了,只有navigationcontroller的时候是可以直接回到rootviewcontroller的,而dismiss只能一层一层的去掉
难道没有别的办法实现直接dismiss到A了吗: 非也!!!
根据群里兄弟的建议:
你就B加委托,弹出C的时候,C调用dismiss,回调通知B也dismiss
转载自: http://blog.csdn.net/kmyhy/article/details/7034202
一个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就可以了。- present的时候是可以直接回到第一个viewcon的
- 得到一个汉字的拼音第一个字母,如果是一个英文字母则直接返回大写字母
- iOS 连续多次present 之后,想回到最初的viewController
- 新一轮股票行情可以进入了,但是很可能是在双头的第一个底部。
- 点击应用程序图标,直接回到之前的Activity界面,这种效果是怎么实现的呢?
- 当request.setAtrrbute("存储对象","对象")存储是对象的时候,并且对象中有方法是集合,可以直接到网页中调用方法么?
- 解决“多个UITableView的时候不能点击状态栏回到顶部”问题
- 解决“多个UITableView的时候不能点击状态栏回到顶部”问题
- 新浪微博分享多个页面回调不能直接回到调用的Activity问题
- 第一份工作,第一个可以自己开发的新项目
- 钟表,可以回到起点,却已不是昨天。使人成熟的是经历,而不是岁月
- 英特尔是个可以讲理的地儿
- C++中构造函数居然是可以直接调用的
- C++中构造函数居然是可以直接调用的
- 第一个想到的是你
- 这是我的第一个BLOG
- 第一个想到的是你
- 这是我的第一个blog
- POJ 1458 Common Subsequence
- 第十二讲 对话框和对话框类CDialog
- 算菜价 2090
- 双层桶
- 【PHP】 异常处理
- present的时候是可以直接回到第一个viewcon的
- 第十三讲 MFC工具条和状态栏
- 基于模型的测试框架的想法 (一)
- poj 1655 Balancing Act(树dp)
- 使用WinDbg分析蓝屏dump原因
- 第十四讲 SOCKET类的设计和实现
- linux c mysql 开发
- hdu 2152 生成函数
- 【Java并发编程】之九:死锁(含代码)