今天在Q群里有人问了个这么个问题: A,B,C,D 都是Viewcontroller。A、B、C、D使用present去切的

他是这么搞的: A -> B, B ->C, C->D,然后他想在D直接到A控制器中。问有没有什么办法?

1、 首先先不管这个问题,我们来一起说说push 和present的一些区别?

present: 有一种效果,模态切换。它是VC的一个方法。

上图中的下面两个方法是7以上被废弃了。

push:依赖于导航栏。它是导航栏的一个特有方法.

当然没还有个区别:present可以立即显示一个View,后者是把一个View压进栈,然后显示出来。

对于如何从d->a  dismiss的问题  想了到了个办法:

在dismiss的时候如果你是一层一层dimiss的话会出现一个一个界面消失的间隔,这个时候我找了很多资料,但是没有找到解决办法都是那么一层一层去搞,用户体验不好。像我这种有UI洁癖的是果断不能接受的。

于是我想为什么present可以一层一层present,还可以一层一层dimiss,感觉有点像push的stack,但更形象的说VC之前存在一种关系,就像一条线。这不禁让我想起了数据结构中的链表。当时周围的一个伙伴给我出了个主意-----后一个vc指向前一个vc,然后每层dimiss。  然后在之前资料中找到“苹果的思维非同凡响,其实你只需要解散一个Modal View Controller就可以了。即处于最底层的View Controller,这样处于这个层之上的ModalView Controller统统会被解散。” 经典,果然

最后在d中一句代码搞定:

[self.presentingViewController.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];

然后,然后的然后就是prefrect。

总结:

在这个过程中,我还用过通知去解决,然后我在b和c都进行处理对d发出的通知。然而事情并不会d->c->b->a dimiss.哈哈,我太天真了。

消息发出之后,接受者接收执行操作,他们接收的先后顺序是不知道的,我太自以为是了,哈哈。别

iOS之ViewController的多层presentViewController的dismiss问题的更多相关文章

  1. iOS开发-ViewController的生命周期和切换

    ViewController在App开发中是至关重要的一环,无论是页面的展示和数据之间的交互,ViewController提供了一个框架可以管理和构建App应用.iOS中构建App提供了两种方式一种是 ...

  2. iOS学习——ViewController(六)

    ViewController是iOS应用程序中重要的部分,是应用程序数据和视图之间的重要桥梁,ViewController管理应用中的众多视图. iOS的SDK中提供很多原生ViewControlle ...

  3. [Android开发学iOS系列] ViewController

    iOS ViewController 写UIKit的代码, ViewController是离不开的. 本文试图讲讲它的基本知识, 不是很深入且有点杂乱, 供初级选手和跨技术栈同学参考. What is ...

  4. (iOS)viewController背景透明化

    #ifdef __IPHONE_8_0 ) { [UIApplication sharedApplication].keyWindow.rootViewController.providesPrese ...

  5. IOS某个ViewController禁止自动旋转

    IOS屏幕自动旋转,强制横竖屏方法: - (BOOL)shouldAutorotate { return YES; } - (NSUInteger)supportedInterfaceOrientat ...

  6. iOS:viewController 和 view 的生命周期、不错的代码设计风格

    一.介绍: viwe和viewController的生命周期是最基本的知识,如果很好地理解它们的方法调用的执行顺序,就能很好地设计代码的风格.这篇博客转载自:http://www.cnblogs.co ...

  7. ios 单个ViewController屏幕旋转

    如果需要旋转的ViewController 使用了UINavigationController,对UINavigationController进行如下扩展 @implementation UINavi ...

  8. iOS 给 ViewController 减负 之 UITableView

    今天看了一些博客文章分享了如何给ViewController 瘦身的问题, 其中一个就是tableView. 的确,随着产品迭代,VC里面可能越来越臃肿,有时候真的需要好好进行一次瘦身.可能是参考的博 ...

  9. iOS 一个ViewController上显示2个tableView的方法

    1.在StoryBoard上创建2个tableView,并用autolayout约束. 2.在ViewController上拖进来. @property (weak, nonatomic) IBOut ...

随机推荐

  1. XML【介绍、用途、了解XML技术架构、语法】

    什么是XML? XML:extensiable markup language 被称作可扩展标记语言 XML简单的历史介绍: gml->sgml->html->xml gml(通用标 ...

  2. 如何用SQL实现组内前几名的输出

    关于问题 如何查询组内最大的,最小的,大家或许都知道,无非是min.max的函数使用.可是如何在MySQL中查找组内最好的前两个,或者前三个? 什么是相关子查询 在提出对于这个问题的对应方法之前,首先 ...

  3. spring 注解方式配置Bean

    Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件特定组件包括: @Component:基本注解,标示了一个受Spring管理的Bean组件 @Respository:标识 ...

  4. php调用webservice接口

    项目中使用到了调用三方厂商webService接口.他的接口类似为http://haha.cn:86/BaseInfoService.svc?wsdl,在这里我注意到了"wsdl" ...

  5. NET应用——使用RSA构建相对安全的数据交互

    最近又被[现场破解共享单车系统]刷了一脸,不得不开始后怕:如何防止类似的情况发生? 想来想去,始终觉得将程序加密是最简单的做法.但是摩拜.ofo也有加密,为什么仍然被破解?那是因为请求在传输过程中被篡 ...

  6. java集合系列——Map之HashMap介绍(八)

    1.HashMap的简介 (JDK1.7.0_79版本) HashMap是基于哈希表的Map实现的的,一个Key对应一个Value,允许使用null键和null值,不保证映射的顺序,特别是它不保证该顺 ...

  7. Hive基础(2)---(启动HiveServer2)Hive严格模式

    启动方式 1, hive  命令行模式,直接输入/hive/bin/hive的执行程序,或者输入 hive –service cli 用于linux平台命令行查询,查询语句基本跟mysql查询语句类似 ...

  8. 翻译:MLAPP(2.1节)

    笔者:尝试翻译MLAPP(Machine Learning: a Probabilistic Perspective)一书,供机器学习的学者参考,如有错误理解之处请指出,不胜感激!(如需转载,请联系本 ...

  9. 技术领导(Technical Leader)画像

    程序员都讨厌被管理,而乐于被领导.管理的角色由PM(project manager)扮演,具体来说,PM负责提需求.改改改.大多数情况,PM是不懂技术的,这也是程序员觉得PM难以沟通的原因.而后者由技 ...

  10. 扩展jquery.validate自定义验证,自定义提示,本地化

    <!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...