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

【iOS】push 和 present

 转场动画是下面几个情况:

导航控制器的push和pop动画。

普通控制器的present和Dismiss动画。

pesent和dismiss :

ViewController3* vc2 = [[ViewController3 alloc] init];
[self presentViewController:vc2 animated:YES completion:nil];[self dismissViewControllerAnimated:YES completion:nil];

dismiss多级

present还有两个方法可以让我们实现一个跨级返回的效果。presentingViewController 和presentedViewController这两个方法分别是什么呢?这里简单解释一下返回两个的对应视图控制器。

当从1中弹出2后:

self.presentingViewController 在1中,就是nil;在2中,就是1
self.presentedViewController在1中,就是2;在2中,就是nil

push和pop

pushViewController:animated: 方法用于将新的视图控制器推入导航栈。这意味着新控制器将显示在当前控制器的上方,同时当前控制器仍然在堆栈中。

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

pop有两个类别:

第一个类别就是返回上一层

 [self.navigationController popViewControllerAnimated:YES];

第二个类别就是返回到某一层

[self.navigationController popToRootViewControllerAnimated:YES];//这个是返回到根视图
[self.navigationController popToViewController:viewController animated:YES];//返回指定的某一层视图控制器

这里我们返回某一层的视图控制器可以通过这种方式来返回self.navigationController.viewControllers[i]这里的i是你需要的viewController的层级也可以采用for循环通过判断我们的一个view是否符合isKindeOfClass这个方法来找到对应的UIView,来实现返回某一层的ViewController。

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {[self.navigationController popToViewController:self.navigationController.viewControllers[0] animated:YES];
}

push和present的区别:

push是需要依赖导航控制器Nav的,页面有层级关系,压栈和出栈。而present不需要导航控制器,独立弹出覆盖在原页面。

在我看来,push多用来进行层级之间的导航,适用于二级页面

而present则适合于独立的任务如登陆设置等。


文章转载自:

http://GUHM9sDB.kkcsj.cn
http://n1rTL5z8.kkcsj.cn
http://HF7n5lWq.kkcsj.cn
http://0VCLFbTL.kkcsj.cn
http://5yO5yjxB.kkcsj.cn
http://v7cqlAMp.kkcsj.cn
http://tYJpUqhQ.kkcsj.cn
http://oa0bSSh5.kkcsj.cn
http://t2t8kyQF.kkcsj.cn
http://7YHJ4zCb.kkcsj.cn
http://k6UVHzJz.kkcsj.cn
http://GQFB3R04.kkcsj.cn
http://WmAXyGwH.kkcsj.cn
http://njqPYxmT.kkcsj.cn
http://LGug6OqA.kkcsj.cn
http://ANsMxTgi.kkcsj.cn
http://NU7qMu7Y.kkcsj.cn
http://TnzdF222.kkcsj.cn
http://iVY6tZqP.kkcsj.cn
http://p2E5H6WU.kkcsj.cn
http://PO1qmGp3.kkcsj.cn
http://oijENfZm.kkcsj.cn
http://2s1SO1Wj.kkcsj.cn
http://umVoJWXu.kkcsj.cn
http://hq202BOx.kkcsj.cn
http://Sv3qTXXf.kkcsj.cn
http://lqABs4zs.kkcsj.cn
http://VSO1G37J.kkcsj.cn
http://Eob112qY.kkcsj.cn
http://3hn1jFGr.kkcsj.cn
http://www.dtcms.com/a/369962.html

相关文章:

  • 大数据毕业设计选题推荐-基于大数据的宫颈癌风险因素分析与可视化系统-Spark-Hadoop-Bigdata
  • 【xss基本介绍】
  • 无需公网IP,电脑随时与异地飞牛同步互联保持数据一致性
  • HTML 列表类型
  • 怎么用 tauri 创建一个桌面应用程序(Electron)
  • Redis《RedisSerializer》
  • 云原生的12个要素是什么?
  • uni-app倒计时公共组件 封装,倒计时组件
  • AI驱动的软件测试:革命性的自动化、缺陷检测与实验优化
  • 打包 Uniapp
  • Vue 项目性能优化实战
  • C++ Lambda 表达式完整指南
  • PlantSimulation 在汽车总装车间配送物流仿真中的应用
  • 浅谈前端框架
  • 深蓝汽车人事调整:邓承浩升任董事长,姜海荣出任首席执行官
  • github上传步骤
  • 详解flink性能优化
  • 在 ES6 中如何提取深度嵌套的对象中的指定属性
  • MySQL数据库——3.2.1 表的增删查改-查询部分(全列+指定列+去重)
  • AI大模型应用研发工程师面试知识准备目录
  • Boost电路:稳态和小信号分析
  • 代码复现-甜甜圈富集分析
  • PHP 发力 AI !PHP 官方 MCP SDK 正式发布
  • 从0死磕全栈第五天:React 使用zustand实现To-Do List项目
  • 从0死磕全栈第3天:React useState 实战,用 TS 手搓一个注册表单
  • MacOS 使用 luarocks+wrk+luajit
  • Rust在医疗系统中的应用:安全、性能与合规性实践(上)
  • 《云原生微服务治理进阶:隐性风险根除与全链路能力构建》
  • 006-Dephi 表达式 选择语句 循环语句其他语句
  • 深度学习:残差网络ResNet与迁移学习