热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【iOS】Present和Push的区别

文章目录简介push样例present样例git地址简介push与present都可以推出新的界面。present与dismiss对应,push和pop对应。pre

文章目录

  • 简介
  • push
    • 样例
  • present
    • 样例
  • git地址


简介
  • pushpresent都可以推出新的界面。
  • presentdismiss对应,pushpop对应。
  • present只能逐级返回,push所有视图由视图栈控制,可以返回上一级,也可以返回到根ViewController,或其他ViewController
  • present一般用于不同业务界面的切换,push一般用于同一业务不同界面之间的切换

push

pop一共分为两类, pop是navigationController的方法。

  • 第一类就是,直接返回到上一层。

[self.navigationController popViewControllerAnimated:YES];

  • 第二类就是返回到某一层。

[self.navigationController popToRootViewControllerAnimated:YES]; //返回到根控制器
[self.navigationController popToViewController:FirstViewController animated:YES]; //返回到指定控制器

平时我们可能会有这样的需求,在第一个tabBar1的界面中,我们点击了当前页面上的某个控件,让显示第ntabBar上的内容,相当于从一个tabBar1跳转另一个tabBar(n),其实这个很简单,在当前tabBar1界面控件的事件中加一行代码即可

self.tabBarController.selectedIndex = 2; //(2为要跳转的索引)

样例

UIButton* pushButton = [UIButton buttonWithType:UIButtonTypeSystem];[pushButton setTitle:@"push下一个界面" forState:UIControlStateNormal];pushButton.frame = CGRectMake(100, 150, 150 , 70);[pushButton addTarget:self action:@selector(pressPushButton) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:pushButton];- (void)pressPushButton {SecondViewController* secondViewController = [[SecondViewController alloc] init];[self.navigationController pushViewController:secondViewController animated:YES];
}

present

  • present多个视图控制器的时候,系统维护了一个栈,栈底到栈顶依次是A->B->C->D,当在A中执行dismiss方法,栈中在A之上的视图都会被dismiss。不同的是,栈顶的视图控制器将会以动画方式被dismiss,而中间的视图控制器只是简单的remove掉。

样例

UIButton* presentButton = [UIButton buttonWithType:UIButtonTypeSystem];[presentButton setTitle:@"present下一个界面" forState:UIControlStateNormal];presentButton.frame = CGRectMake(100, 400, 150 , 70);[presentButton addTarget:self action:@selector(pressPresentButton) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:presentButton];

#import "PresentViewController.h"@interface PresentViewController ()@end@implementation PresentViewController- (void)viewDidLoad {[super viewDidLoad];self.view.backgroundColor = [UIColor whiteColor];UIButton* presentButton = [UIButton buttonWithType:UIButtonTypeSystem];[presentButton setTitle:@"dismiss到上一个界面" forState:UIControlStateNormal];presentButton.frame = CGRectMake(100, 300, 150 , 70);[presentButton addTarget:self action:@selector(pressPresentButton) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:presentButton];
}
- (void)pressPresentButton {[self dismissViewControllerAnimated:YES completion:nil];
}

git地址

点击此处


推荐阅读
  • 深入解析 Android 中 EditText 的 getLayoutParams 方法及其代码应用实例 ... [详细]
  • 目录预备知识导包构建数据集神经网络结构训练测试精度可视化计算模型精度损失可视化输出网络结构信息训练神经网络定义参数载入数据载入神经网络结构、损失及优化训练及测试损失、精度可视化qu ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • 开发技巧:在Interface Builder中实现UIButton文本居中对齐的方法与步骤
    开发技巧:在Interface Builder中实现UIButton文本居中对齐的方法与步骤 ... [详细]
  • 优化后的摘要:默认情况下,PopupWindow在点击外部区域时会自动关闭。为了实现点击外部区域时不自动关闭的功能,可以通过自定义设置来调整PopupWindow的行为,确保其在外部点击时仍保持显示状态。这需要对PopupWindow的属性进行适当的修改和配置,以满足特定的交互需求。 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • 本文详细介绍了 com.apollographql.apollo.api.internal.Optional 类中的 orNull() 方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 实验九:使用SharedPreferences存储简单数据
    本实验旨在帮助学生理解和掌握使用SharedPreferences存储和读取简单数据的方法,包括程序参数和用户选项。 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 本文详细介绍了一种利用 ESP8266 01S 模块构建 Web 服务器的成功实践方案。通过具体的代码示例和详细的步骤说明,帮助读者快速掌握该模块的使用方法。在疫情期间,作者重新审视并研究了这一未被充分利用的模块,最终成功实现了 Web 服务器的功能。本文不仅提供了完整的代码实现,还涵盖了调试过程中遇到的常见问题及其解决方法,为初学者提供了宝贵的参考。 ... [详细]
  • 在Android开发中,实现多点触控功能需要使用`OnTouchListener`监听器来捕获触摸事件,并在`onTouch`方法中进行详细的事件处理。为了优化多点触控的交互体验,开发者可以通过识别不同的触摸手势(如缩放、旋转等)并进行相应的逻辑处理。此外,还可以结合`MotionEvent`类提供的方法,如`getPointerCount()`和`getPointerId()`,来精确控制每个触点的行为,从而提升用户操作的流畅性和响应性。 ... [详细]
  • 为了实现跨浏览器兼容的禁用文本选择功能,可以通过在全局CSS样式中定义一个特定的类来禁止用户选中文本。具体做法是在全局样式表中添加一个名为 `.no-select` 的类,并在需要禁用文本选择的元素上应用该类。这样可以确保在不同浏览器中都能达到一致的效果。此外,还可以结合JavaScript进一步增强用户体验,例如在某些交互场景下动态启用或禁用文本选择功能。 ... [详细]
  • 掌握Android UI设计:利用ZoomControls实现图片缩放功能
    本文介绍了如何在Android应用中通过使用ZoomControls组件来实现图片的缩放功能。ZoomControls提供了一种简单且直观的方式,让用户可以通过点击放大和缩小按钮来调整图片的显示大小。文章详细讲解了ZoomControls的基本用法、布局设置以及与ImageView的结合使用方法,适合初学者快速掌握Android UI设计中的这一重要功能。 ... [详细]
author-avatar
云崽美不美_525
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有