【iOS】push与present Controller的区别

文章目录

  • 前言
  • 一、push方法
  • 二、pop方法
  • 三、present方法
  • 四、dismiss方法
  • 五、dismiss多级的方法
    • 举例
    • 动画


前言

iOS推出与退出界面有两种方式——push与present,接下来笔者分别介绍这两种方式


一、push方法

    SecondViewController *second = [[SecondViewController alloc] init];[self.navigationController pushViewController:second animated:YES];

二、pop方法

	//返回上一级[self.navigationController popViewControllerAnimated:YES];//返回根视图[self.navigationController popToRootViewControllerAnimated:YES];//返回指定级数 (objectAtIndex:参数为想要返回的级数)[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0]  animated:YES];

三、present方法

    SecondViewController *second = [[SecondViewController alloc] init];[self presentViewController:second animated:YES completion:nil];

四、dismiss方法

    [self dismissViewControllerAnimated:YES completion:nil];

五、dismiss多级的方法

presentedViewController和presentingViewController是UIViewController里面的两个属性
PresentedViewController 与 PresentingViewController区别

presentedViewController:The view controller that was presented by this
view controller or its nearest ancestor. 由这个视图控制器或它最近的祖先呈现的视图控制器
presentingViewController:The view controller that presented this view
controller (or its farthest ancestor.) 呈现此视图控制器(或其最远祖先)的视图控制器。

假设从A控制器通过present的方式跳转到了B控制器,那么 A.presentedViewController 就是B控制器;
B.presentingViewController 就是A控制器;


举例

创建四个页面ABCD,例如我们想从D->A,我们可以用如下方法:

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

例如我们想从D->B,我们可以使用presenting来跳转页面

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

如下代码也可以实现D->B

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

动画

在这里插入图片描述

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

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

相关文章

【C++】AVL树

个人主页:🍝在肯德基吃麻辣烫 我的gitee:C仓库 个人专栏:C专栏 文章目录 前言一、什么是AVL树?设计AVL树的原因 二、AVL树的性质三、二叉树节点的定义四、AVL树的插入旋转1)右单旋2)左单旋3&…

目标检测中生成锚框函数详解

%matplotlib inline import torch from d2l import torch as d2l torch.set_printoptions(2) # 让pytorch打印张量时,只打印到小数点后两位将设一张图片,宽和高为2,2 X torch.rand(size(1,3,2,2)) Y generate_anchors(X,sizes[0.75,0.5,0.25],ratios[…

HPC集群自动弹性扩缩的两种实现方式

常青藤 HPC常青园 2023-07-28 19:48 发表于北京 弹性扩缩技术正在成为HPC集群中的一项重要技术。它可以根据实际需求动态调整集群资源,应对用户负载的波动。对于运维团队来说,自动弹性扩缩能够减轻集群运维负担,提高集群资源利用率&#xff0…

小程序Saas平台源码:开启电商小程序新时代,可视化后台自由DIY的无限可能

在当今数字化的时代,小程序已成为各行各业开展业务的重要工具。尤其在电商领域,小程序能有效地缩短消费者与商品之间的距离,提升营销效率。给大家分享一款针对电商行业的小程序Saas平台源码,它具有一键生成电商小程序、可视化后台…

Go基础八股

【Go面试】Go slice深拷贝和浅拷贝_哔哩哔哩_bilibili 基础篇 1.Go方法值接收者和指针接收者的区别 简单言之就是是否会影响调用的结构体,方法接收者是指针会影响 2.返回局部变量的指针 一般来说,局部变量会在函数返回后被销毁,因此被返回…

flink的网络缓冲区

背景 在flink的taskmanager进行数据交互的过程中,网络缓冲区是一个可以提升网络交换速度的设计,此外,flink还通过网络缓冲区实现其基于信用值credit的流量控制,以便尽可能的处理数据倾斜问题 网络缓冲区 在flink中每个taskmana…

C++ 太卷,转 Java?

最近看到知乎、牛客等论坛上关于 C 很多帖子,比如: 2023年大量劝入C 2023年还建议走C方向吗? 看了一圈,基本上都是说 C 这个领域唯一共同点就是都使用 C 语言,其它几乎没有相关性。 的确是这样,比如量化交…

微信小程序遇到的一些问题及解决方法(设备安装)

微信小程序遇到的一些问题及解决方法 1、[js将字符串按照换行符分隔成数组](https://blog.csdn.net/pgzero/article/details/108730175)2、[vue byte数组](https://www.yzktw.com.cn/post/1202765.html)3、使用vant-weapp的文件上传capture"camera" 无法直接调用摄像…

OPC UA协议报文,基础介绍+Hello报文解析

消息主要分为:消息头和附加字段 通讯过程 协议标准第一部分进行总体介绍;协议标准第四部分有详细介绍通讯过程 流程介绍 整体流程 连接套接字》Hello》打开安全信道》创建会话》关闭安全信道》关闭套接字 订阅等事件 服务器审核行为 聚合的服务器审…

基于未知环境碰撞冲突预测的群机器人多目标搜索研究

源自:指挥与控制学报 作者:边晓荟 周少武 张红强 吴亮红 王汐 王茂 刘朝华 陈磊 “人工智能技术与咨询” 发布 摘 要 群机器人在未知动态环境下进行多目标搜索时,存在碰撞预测和搜索效率不高等问题。提出了一种碰撞几何锥和改进惯性权重…

中秋特辑:Java事件监听实现一个猜灯谜小游戏

众所周知,JavaSwing是Java中关于窗口开发的一个工具包,可以开发一些窗口程序,然后由于工具包的一些限制,导致Java在窗口开发商并没有太多优势(当然也有一些第三方的工具包也很好用),不过&#x…

一款适用于教培机构的微信CRM系统

在教育培训行业中,有效的客户关系管理(CRM)系统至关重要。微信作为一种流行的社交媒体平台,具有巨大的潜在价值,可以被用来提升教培机构的客户管理和销售效率。 一些教育培训行业存在的问题 ①每年开班收学员太多&…

二叉树的几个递归问题

我的主页:Lei宝啊 愿所有美好如期而遇 前言: 二叉树的递归是二叉树很重要的问题,几乎解决二叉树的问题都要使用递归,接下来我们将解决二叉树几个最基础的递归问题。 目录 前言: 二叉树的前序,中序&…

JDK jps命令复习

之前写过jdk命令工具的博文,下面复习jps命令; jps 是 Java Process Status Tool 的简称,它的作用是为了列出所有正在运行中的 Java 虚拟机进程和相关信息; jps 命令参数 -q 只输出进程 ID,省略主类的名称 -m 输出虚拟机进程启动时传递…

基于Java新枫之谷游戏攻略设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

数据结构---链表(java)

目录 1. 链表 2. 创建Node 3. 增加 4. 获取元素 5. 删除 6. 遍历链表 7. 查找元素是否存在 8. 链栈的实现 9. 链队的实现 1. 链表 数据存放在"Node"结点中 优点:不用考虑扩容和缩容的问题,实现了动态存储数据 缺点:没有…

在Python中 作用域与命名空间的坑

前言: 嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 1. 命名空间 1.1 什么是命名空间 Namespace命名空间,也称名字空间,是从名字到对象的映射。 Python中,大…

【多卡训练报错】:The server socket has failed to listen on any local network address.

错误: RuntimeError: The server socket has failed to listen on any local network address. The server socket has failed to bind to [::]:16664 (errno: 98 - Address already in use). The server socket has failed to bind to 0.0.0.0:16664 (errno: 98 -…

JMeter:接口测试基础介绍

一、什么是接口 接口是非常抽象的概念,先来看下中国最大的综合性辞典《辞海》是怎样定义接口的: 两个不同系统或系统中两个不同特性部分的交接部分。一般分硬件接口和软件接口两种。前者是为连接计算机各部分之间、计算机与计算机之间、计算机与外部系统…

虚拟机Ubuntu操作系统常用终端命令(3)(详细解释+详细演示)

本篇概要 本篇讲述了Ubuntu操作系统常用的几个功能,即修改文件权限、修改文件属性、可执行脚本、虚拟机网络、FTP服务器、SSH服务器、VIM等方面的知识。希望能够得到大家的支持。 文章目录 本篇概要1.修改文件权限2.修改文件属主3.可执行脚本3.1要点与细节3.2shell…