present的时候是可以直接回到第一个viewcon的
最新:我并没有记错,是可以直接回到的
[self.presentingViewController.presentingViewController dismissModalViewControllerAnimated: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的的更多相关文章
- android webview点击返回键回到上一个html
android webview点击返回键返回上一个html @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ( ...
- Xamarin.Android 怎么定义一个按钮和返回键功能一样回到上一个界面
https://zhidao.baidu.com/question/570934367.html页面之间的跳转有startActivity 和startActivityForResult两种,star ...
- vue 根据接口返回的状态码判断用户登录状态并跳转登录页,登录后回到上一个页面(http拦截器)
背景:后台接口返回code==501表示用户是未登录状态,需要登录才可访问: 通过http拦截做路由跳转 第一步:src目录下新建http.js文件,内容如下: import Axios from ' ...
- 【ASP.NET Core】解决“The required antiforgery cookie "xxx" is not present”的错误
当你在页面上用 form post 内容时,可能会遇到以下异常: The required antiforgery cookie "????????" is not present ...
- Determining IP information for eth0... failed; no link present. Check cable?
在RedHat下重启网络,service network restart之后,出现问题 Determining IP information for eth0... failed; no link p ...
- JavaScript实现回到顶部
HTML页面使用一个a标签,href内填写JavaScript:;以阻止默认行为,在学习实例的时候添加一个大的div来充实页面. demo: <a href="javascript:; ...
- Linux 克隆虚拟机引起的“Device eth0 does not seem to be present, delaying initialization”
Linux 克隆虚拟机引起的“Device eth0 does not seem to be present, delaying initialization” 虚拟机Vmware上克隆了一个Red ...
- golang工具之present - 编写go特色的ppt
简介: Golang Present 是 Golang 社群开发出來的一个简单工具,通过简单的语法可以制作 ppt(语法近似于 Markdown). 默认文件格式是 .slide ,是随着 gol ...
- 浅谈Hybrid技术的设计与实现第二弹
前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹——落地篇 接上文:浅谈Hybrid技术的设计与实现(阅读本文前,建议阅读这个先) ...
随机推荐
- PowerDesigner自定义列和过滤器
好多次要增加注释列,默认值列都忘了怎么设置,写下来以备后用:) 选中表,然后右键,选择properties->columns->点击下图中那个不显眼的小图标(Customize Colum ...
- 打开Excel时提示"您尝试打开的文件**.xls的格式与文件扩展名指定的格式不一致"
问题描述: 系统安装了WPS时,Analyzer导出excel时候,会提示"您尝试打开的文件**.xls的格式与文件扩展名指定的格式不一致",这是Excel的安全问题, ...
- 使用GPS经纬度定位附近地点(某一点范围内查询)
需要手机查找附近N米以内的商户,致想法是已知一个中心点,一个半径,求圆包含于圆抛物线里所有的点,经纬度是一个点,半径是一个距离,不能直接加减,下面提供C#的解决方法 数据库中记录了商家在百度标注的经纬 ...
- web2.0、互联网+、IT时代与DT时代、工业4.0 引发的思考
最近忙着找实习,来学校一个星期还没到,就感觉已经经历了几个春秋. 第一个实习面试是个杭州互联网小公司,面WEB前端开发实习,怪我一个暑假两个月一点书都没碰,偏偏赶上G20到9/9才开学,没啥准备就一头 ...
- git workflows
https://www.atlassian.com/git/tutorials/comparing-workflows Comparing Workflows The array of possibl ...
- git merge branches
git clone url #克隆新的版本库 git init git pull repo_name #有关联的远程库,抽取并和本地合并 git fetch remote_repo_name #抽取并 ...
- 安装 tomat
(1)新建一个文件夹放置要下载的tomcat: mkdir /software 进入software目录 cd /software (2)下载tomcat放置在software目录下 wget ht ...
- python(5) - time模块
import time 1. time.gmtime() 显示当前structtime,格林时间 >>> import time >>> time.gm ...
- [改善Java代码]asList方法产生的List对象不可更改
上一个建议之处了asList方法在转换基本类型数组时候存在的问题,在看下asList方法返回的列表有何特殊的地方.看代码: import java.util.Arrays; import java.u ...
- [未完成]关于Oracle知识总结
关于Oracle知识总结关于Oracle知识总结关于Oracle知识总结关于Oracle知识总结