线上购物网站建设成本,吴忠网站建设多少钱,杭州设计网站的公司,网建公司目录 前言push和poppushpop present和dismisspresentdismiss实现模态对话框代码示例 区别总结 前言 push 和 present 是两种用于导航和切换视图控制器#xff08;ViewController#xff09;的常用方法#xff0c;push与present都可以推出新的界面#xff0c;present与dismi… 目录 前言push和poppushpop present和dismisspresentdismiss实现模态对话框代码示例 区别总结 前言 push 和 present 是两种用于导航和切换视图控制器ViewController的常用方法push与present都可以推出新的界面present与dismiss对应push和pop对应。 present只能逐级返回push所有视图由视图栈控制可以返回上一级也可以返回到根vc或其他vc。
push和pop
push和pop分别用于在导航控制器中添加视图控制器、移除视图控制器。
push
push 方法通常与导航控制器UINavigationController一起使用。当我们调用一个视图控制器的pushViewController:animated: 方法时即会将新的视图控制器“推入”导航堆栈的顶部且会创建一个向右滑动的动画效果并且新的视图控制器会成为当前显示的视图控制器。
当我们想要在应用程序中创建一个导航层次结构时比如在不同的层级之间切换如从列表到详情。用户可以通过按下导航栏上的返回按钮或手势滑动来返回到先前的视图控制器。
示例代码
UIViewController *viewController [[UIViewController alloc] init];
[self.navigationController pushViewController:viewController animated:YES];pop
从导航堆栈中移除当前视图控制器返回到之前的视图控制器。使用popViewControllerAnimated:方法实现用户点击返回按钮或手势滑动返回上一个视图控制器功能。
示例代码
[self.navigationController popViewControllerAnimated:YES];present和dismiss
present和dismiss分别用于呈现模态视图控制器和关闭模态视图控制器。 模态对话框Modal Dialog是一种用户界面元素它用于在应用程序中临时显示一个窗口要求用户进行交互同时阻止用户与应用程序的其他部分进行交互直到对话框关闭。在模态对话框显示期间用户必须对对话框进行响应才能返回到应用程序的主界面。 present
present 方法用于模态地呈现一个视图控制器。当你调用一个视图控制器的 presentViewController:animated:completion: 方法时你正在将新的视图控制器覆盖在当前视图控制器之上。这通常用于显示一个临时的界面如弹出窗口、警告框或表单。
当你想要显示一个临时的视图控制器用户需要与之交互比如登录窗口、设置选项或表单。 当你不需要导航堆栈来管理视图控制器时比如在游戏或媒体播放器中。 示例代码
UIViewController *viewController [[UIViewController alloc] init];
[self presentViewController:viewController animated:YES completion:nil];dismiss
关闭当前模态呈现的视图控制器返回到之前的视图控制器。 使用dismissViewControllerAnimated:completion:方法实现用户完成模态视图控制器中的操作如填写表单、查看图片后并关闭它的功能。 示例代码
[self dismissViewControllerAnimated:YES completion:nil];实现模态对话框代码示例
创建并呈现模态对话框
// 创建一个新的视图控制器实例这将作为模态对话框
UIViewController *modalViewController [[UIViewController alloc] init];// 配置模态对话框视图控制器的属性如视图背景色、大小等
modalViewController.view.backgroundColor [UIColor whiteColor];
modalViewController.modalPresentationStyle UIModalPresentationStyleOverFullScreen; // 设置模态样式// 呈现模态对话框
[self presentViewController:modalViewController animated:YES completion:nil];关闭模态对话框
// 在模态对话框中添加一个按钮用于关闭对话框
UIButton *closeButton [UIButton buttonWithType:UIButtonTypeSystem];
[closeButton setTitle:Close forState:UIControlStateNormal];
[closeButton addTarget:self action:selector(closeModal) forControlEvents:UIControlEventTouchUpInside];
[modalViewController.view addSubview:closeButton];// 实现关闭模态对话框的方法
- (void)closeModal {// 调用 dismiss 来关闭模态对话框[self dismissViewControllerAnimated:YES completion:nil];
}区别
导航堆栈push 将视图控制器添加到导航堆栈中而 present 不会。 返回方式使用 push 时用户可以通过物理返回按钮或手势返回到前一个视图控制器。使用 present 时通常需要实现一个关闭按钮或手势来关闭模态视图控制器。 动画效果push 通常向右滑动而 present 的动画效果可以自定义通常从底部或中间弹出。 使用上下文push 适用于导航结构present 适用于模态对话框。
总结
present一般用于不同业务界面的切换push一般用于同一业务不同界面之间的切换。 导航控制器UINavigationController主要用于管理视图控制器的堆栈支持 push 和 pop 操作。 模态呈现Modal Presentation不涉及导航堆栈用于临时显示视图控制器支持 present 和 dismiss 操作。 返回按钮和关闭按钮在 pop 和 dismiss 操作中通常有返回按钮或关闭按钮供用户操作。