【iOS】dismiss多级的方法

前言

上次笔者总结过push和pop推入和推出界面的方法,这里对于dismiss多级的方法进行一个总结,推入推出方法可以看看笔者这篇博客:【iOS】UI学习——界面切换

dismiss推出多级的原理

当我们使用pop推入新的界面的时候,连续pop推入时,就会建立一个视图控制器堆栈,则在堆栈中较低的视图控制器上调用此方法会解除其直接子视图控制器和堆栈中该子级以上的所有视图控制器。当发生这种情况时,只有最上面的视图以动画的方式被取消;任何中间视图控制器都只是从堆栈中删除。最上面的视图将使用其模态转换样式来消除,这可能与堆栈中较低的其他视图控制器使用的样式不同。(摘自Apple文档描述)
所以,当我们dismiss多级的时候,就是将位于栈顶的视图控制器一层层删除,直到到达显示的视图控制器。在这里我们首先要明确两个概念,**当使用present推入一个新的视图控制器的时候,我们设定为A推入B,那么A.presentedViewController就是B视图控制器,B.presentingViewController就是A。**经过上面的描述,我们就可以来使用B.presentingViewController来dismiss多级了。


举例展示

首先我们创建A、B、C、D四个视图控制器,然后我使用这四个视图控制器来演示dismmis多级的方法
展示:
从任意一层到A:这里以D->A为例:

     UIViewController *VC = self.presentingViewController;while  (VC. presentingViewController ) {VC = rootVC.presentingViewController ;}[VC dismissViewControllerAnimated:YES completion:nil];

从D->B:

-(void) press
{[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];
}

当我们返回前几层视图控制器的时候就可以使用这个方法self.presentingViewCOntroller.presentingViewCOntroller


当需要dismiss多级时,也可以使用while循环来dismiss多级:

-(void) press
{UIViewController* VcRoot = self.presentingViewController;while([VcRoot isKindOfClass:[VCtwo class]]){VcRoot = VcRoot.presentingViewController;}[VcRoot dismissViewControllerAnimated:YES completion:nil];
}

这个方法就比上面的更加方便和美观,笔者个人观点,当然两种都可以使用


效果图
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/424722.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在线查看 Android 系统源代码 AOSPXRef and AndroidXRef

在线查看 Android 系统源代码 AOSPXRef and AndroidXRef 1. AOSPXRef1.1. http://aospxref.com/android-14.0.0_r2/1.2. build/envsetup.sh 2. AndroidXRef2.1. http://androidxref.com/9.0.0_r3/2.2. build/envsetup.sh 3. HELLO AndroidReferences 1. AOSPXRef http://aospx…

YOLOv5/v8 + 双目相机测距

yolov5/v8双目相机测距的代码,需要相机标定 可以训练自己的模型并检测测距,都是python代码 已多次实验,代码无报错。 非常适合做类似的双目课题! 相机用的是汇博视捷的双目相机,具体型号见下图。 用的yolov5是6.1版本的…

QT --- 初识QT

一、通过代码构建helloworld界面 一般通过代码来构造界面的时候,通常会把构造界面的代码放到Widget/MainWindow的构造函数中。 Qt中每个类都有对应同名的头文件 上古时期,Qt用的是这种风格的文件。1998年之后,C标准成立了,C98标准…

jenkins入门

CI 、CD入门 一:jenkins实现CI操作 1.在jenkins环境安装jdk 、maven ,同事修改maven里的settings.xml中的两个配置:添加jdk插件版本并开启和私服镜像(也可以在jenkins页面的全局配置选择自动安装,但是自动安装速度很慢,所以这里选择手动安装,后面直接在全局配置指定目…

太阳下山还有月光,月亮睡了还有朝阳

最近听到一首歌《GooGoo-不要慌太阳下山有月光》,觉得里面的歌词很有意思,这也是标题的由来。截取歌词片段: 不要迷茫 不要慌张 太阳下山 还有月光 它会把人生路照亮 陪你到想去的地方 不要彷徨 不要沮丧 月亮睡了 还有朝阳 抬头看天一定会亮…

如何正确使用MMPI量表进行测试?

1、需要初中以上学历,能对测试题准确的理解。 2、应在安静、无干扰的环境中进行,确保自己能够集中注意力完成测试。 3、尽量不要选择“无法回答”这个选项,当然如果确实有无法回答的,也可以选,但是总数不要超过22个。…

Python计算机视觉 第9章-图像分割

Python计算机视觉 第9章-图像分割 图像分割是将一幅图像分割成有意义区域的过程。区域可以是图像的前景与背景或图像中一些单独的对象。这些区域可以利用一些诸如颜色、边界或近邻相似性等特征进行构建。 9.1 图割(Graph Cut) 图割(Graph…

一步一步自制py脚本并且并且修改为exe可执行文件教学外附带SHA-1解密exe文件资源

第一步:安装 Python 下载 Python:访问 Python 官网 下载并安装最新版本的 Python。安装时选择添加到环境变量 PATH:在安装过程中,确保勾选“Add Python to PATH”选项。 第二步:编写 Python 脚本 创建一个新的 Pyth…

基于BiGRU+Attention实现风力涡轮机发电量多变量时序预测(PyTorch版)

前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对…

参赛心得和思路分享:2021第二届云原生编程挑战赛2: 实现一个柔性集群调度机制

关联比赛: 2021第二届云原生编程挑战赛2:实现一个柔性集群调度机制 参赛心得 历时快两个月的第二届云原生编程挑战赛结束了,作为第一次参赛的萌新,拿下了28名的成绩,与第一名差了19万分,因为赛制时间太长&#xff0c…

基于python+django+vue的社区爱心养老管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于pythondjangovueMySQL的社…

103.WEB渗透测试-信息收集-FOFA语法(3)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:102.WEB渗透测试-信息收集-FOFA语法(2) FOFA使用实例 组件框架 …

eureka.client.service-url.defaultZone的坑

错误的配置 eureka: client: service-url: default-zone: http://192.168.100.10:8080/eureka正确的配置 eureka: client: service-url: defaultZone: http://192.168.100.10:8080/eureka根据错误日志堆栈打断电调试 出现两个key,也就是defaultZone不支持snake-c…

cmd命令

常用命令 查看电脑名称: hostname 查看网卡信息: ipconfig 快速打开网络设置界面: control.exe netconnections 或 rundll32.exe shell32.dll,Control_RunDLL ncpa.cpld 打开防火墙设置: wf.msc 指定网卡设置IP地址&#…

Vue:使用v-model绑定的textarea在光标处插入指定文本

一、问题描述 使用v-model绑定的textarea如果需要改变其内容,一般只要改变v-model对应的变量即可,但如果需要在textarea的当前光标位置插入指定文本,那就需要操作DOM了。于是我们写了一段js: const insertTextAtCursor (text) …

基于TCP发送北斗消息给船舶设备终端

文章目录 引言I 自定义动态数据交换协议信息交换接口通信格式消息发送指令状态码错误信息返回指令II Netty实现TCP客户端III Java 原始API实现TCP客户端知识扩展: 基于Netty的定位数据平台通信协议定位方式移动定位设备see also引言 需求:发送北斗消息给船舶设备终端 动态信…

windows安装docker、elasticsearch、kibana、cerebro、logstash

文章目录 1. 安装docker1.1. 两大要点1.1.1. 安装启用hyper-v电脑不存在hyper-v的情况 1.1.2. 下载安装docker 2. 在docker里面安装elasticSearch,kibana,cerebro3. 安装logstash-将数据导入到elasticSearch3.1 安装logstash3.1.1 注意事项3.1.1.1. 等了…

【VSCode】VSCode Background 背景插件辅助窗口程序

前排贴上Github项目链接 GitHub窗口项目链接 这是一个基于VSCode上由shalldie上传的background扩展制作的windows窗口程序。 该程序旨在通过窗口程序尽可能的完善该扩展原有的功能。 background - shalldie 的最大优势是我目前仅在其扩展上发现了UseFront的选项,这…

从汇编语言到高级语言:人类计算机科学的伟大探索

从20世纪中叶第一台电子计算机的诞生,到如今的智能设备遍布全球,计算机科学的发展历程是一部充满着人类探索精神的伟大史诗。计算机语言作为人类与机器交流的桥梁,见证并推动了这一切。从最早的汇编语言到如今多样的高级语言,我们…

基于python+django+vue的鲜花商城系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于pythondjangovueMySQL的线…