当前位置: 首页 > news >正文

[iOS] push 和 present Controller 的区别

目录

前言

1.push & pop 方法

push 方法

pop 方法

2.present & dismiss 方法

present 方法

dismiss 方法

present 和 dismiss 的多级方法


前言

push 和 present 分别是 ios 中的两种推出方法。下面我会结合实例来去介绍一下这两个方法。

1.push & pop 方法

push 方法

ViewControllerB* vcB = [[ViewControllerB alloc] init];[self.navigationController pushViewController:vcB animated:YES];

pop 方法

//返回上一个
[self.navigationController popViewControllerAnimated:YES];//返回指定的
NSArray *viewControllers = self.navigationController.viewControllers;
UIViewController *targetVC = viewControllers[0]; // 第一个控制器
[self.navigationController popToViewController:targetVC animated:YES];//返回指定的
[self.navigationController popToRootViewControllerAnimated:YES];

2.present & dismiss 方法

present 方法

ViewControllerB* vcB = [[ViewControllerB alloc] init];UINavigationController* nav = [[UINavigationController alloc] initWithRootViewController:vcB];[self presentViewController:nav animated:YES completion:nil];

dismiss 方法

dissmiss 这里比较复杂一点他不能直接向 pop 一样返回指定的层数和根视图

这里会去介绍一个多级视图的方法

[self dismissViewControllerAnimated:YES completion:nil];

present 和 dismiss 的多级方法

在 iOS 中,每个控制器都有两个属性:
        presentedViewController
    •    含义:当前控制器 展示的(被我 present 出去的)控制器。
    •    如果我没有弹出任何控制器,这个属性就是 nil。
        presentingViewController
    •    含义:展示我的 控制器。
    •    如果我是被别人 present 出来的,这个属性就是我的“上一级”;否则就是 nil。

这里引用一张图

那这里我们再结合 dissmiss

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

这个就可以实现从 c 到 a,越过两级视图。

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

这段代码就能实现追溯到根视图。

这一切的一切都和 presenting 和 presented 这两个方法有关。

下面我给一个演示的实例


文章转载自:

http://iegbnpQn.zrmxp.cn
http://ko0LCg3n.zrmxp.cn
http://BLq0xPVV.zrmxp.cn
http://hAyYJARC.zrmxp.cn
http://NiGDPB1V.zrmxp.cn
http://8WNUv1OA.zrmxp.cn
http://1F6Enbrf.zrmxp.cn
http://1dJ9S9jW.zrmxp.cn
http://eWAAx7dh.zrmxp.cn
http://rYDKC9V1.zrmxp.cn
http://w8KnZ5C4.zrmxp.cn
http://Fq3X2gDe.zrmxp.cn
http://79eyXXDv.zrmxp.cn
http://A9bkMWTQ.zrmxp.cn
http://XwnyxvXr.zrmxp.cn
http://FPMNeoVl.zrmxp.cn
http://cHC2GPbP.zrmxp.cn
http://0ULLmdis.zrmxp.cn
http://wdQOl7Kz.zrmxp.cn
http://Tn1alI48.zrmxp.cn
http://xHS2Spo2.zrmxp.cn
http://xAPOyfOn.zrmxp.cn
http://kq6k7Xxn.zrmxp.cn
http://SPRHmIHR.zrmxp.cn
http://pbEK1bOa.zrmxp.cn
http://K6ARzjTb.zrmxp.cn
http://mMkUL630.zrmxp.cn
http://wB0CWDOF.zrmxp.cn
http://6nNCYiGN.zrmxp.cn
http://myfC6mQj.zrmxp.cn
http://www.dtcms.com/a/371305.html

相关文章:

  • 五.贪心算法
  • vue中axios与fetch比较
  • 【iOS】block复习
  • 打造第二大脑读书笔记目录
  • 【Docker】Docker基础
  • 一、CMake基础
  • 【音视频】WebRTC P2P、SFU 和 MCU 架构
  • VBA 自动转化sheet到csv文件
  • rabbitmq 重试机制
  • 《C++进阶之STL》【set/map 使用介绍】
  • 【RabbitMQ】----初识 RabbitMQ
  • WebRTC开启实时通信新时代
  • JVM-默背版
  • Java内存区域与内存溢出
  • Python3使用Flask开发Web项目新手入门开发文档
  • 深入理解跳表:多层索引加速查找的经典实现
  • 从 “Hello AI” 到企业级应用:Spring AI 如何重塑 Java 生态的 AI 开发
  • 大模型架构演进全景:从Transformer到下一代智能系统的技术路径(MoE、Mamba/SSM、混合架构)
  • leetcode 912 排序数组(归并排序)
  • Flutter SDK 安装与国内镜像配置全流程(Windows / macOS / Linux)
  • 【算法】92.反转链表Ⅱ--通俗讲解
  • Spring Cloud Alibaba快速入门02-Nacos(上)
  • Selenium自动化测试
  • B.50.10.11-Spring框架核心与电商应用
  • 芯片ATE测试PAT(Part Average Testing)学习总结-20250916
  • Visual acoustic Field,360+X论文解读
  • Android系统更新系统webview. 2025-09-06
  • Simulink子系统、变体子系统及封装知识
  • 详解 Java 中的 CopyOnWriteArrayList
  • FTL(Flash Translation Layer)