页面间跳转方式总结

  • 下面以OldViewController(oldC)的按钮btn点击后跳转到NewViewController(newC)为例说明:

1.Storyboard的segues方式

  • 鼠标点击按钮btn然后按住control键拖拽到newC页面,在弹出的segue页面中选择跳转模式即可
  • 优点: 操作方便,无代码生成,在storyboard中展示逻辑清晰。
  • 缺点: 页面较多时不方便查看,团队合作时可维护性差,多人合作时不建议使用这种方式。

2.选项卡UITabBarController控制器

  • 通过调用UITabBarController的addChildViewController方法添加子控制器
  • 实例代码:
UITabBarController *tabbarVC = [[UITabBarControlleralloc] init];

OldViewController *oldC = [[OldViewController] init];
oldC.tabBarItem.title = @"控制器1";
oldC.tabBarItem.image = [UIImageimageNamed:@"old.png"];
NewViewController *newC = [[NewViewController] init];
newC.tabBarItem.title = @"控制器2";
newC.tabBarItem.image = [UIImageimageNamed:@"new.png"];

// 添加子控制器(这些子控制器会自动添加到UITabBarController的viewControllers数组中)
[tabbarVC addChildViewController:recent];
[tabbarVC addChildViewController:friends];
  • 优点: 代码量较少。
  • 缺点: tabbar的ios原生样式不太好看,对设计有一定要求的可以自定义tabbar。

3.导航控制器UINavigationController

  • 3.1 跳转到下一页面

    • 在oldC的btn的监听方法中调用:
    [self.navigationController pushViewController:newC animated:YES]; 
  • 3.2 返回上一页面 

    • 在newC的方法中调用:
    [self.navigationController popViewControllerAnimated:YES];   
  • 3.3 返回根控制器,即最开始的页面

    • 当有多次跳转发生并希望返回根控制器时,调用:
    [self.navigationController popToRootViewControllerAnimated:YES];     

4.利用Modal形式展示控制器

[self presentViewController:newC animated:YES completion:nil];
  • 在newC中调用:
[self dismissViewControllerAnimated:YES completion:nil];

5.直接更改 UIWindow的rootViewController

  • 总结:

    • Storyboard方式适合个人开发小程序时使用,有团队合作或者项目较大时不建议使用
    • UITabBarController因为目前系统的原生样式不太美观,不建议使用
    • 推荐使用UINavigationController和Modal,无明显缺点,而且目前大部分程序都使用这两种方式,只是看是否需要导航控制器而确定使用哪种方案

原文地址:https://www.cnblogs.com/CH520/p/9565196.html

时间: 2024-10-02 23:40:25

页面间跳转方式总结的相关文章

ios页面间跳转方式总结

转自:http://www.cnblogs.com/anywherego/p/3542202.html 下面以OldViewController(oldC)的按钮btn点击后跳转到NewViewController(newC)为例说明: 1.Storyboard的segues方式 鼠标点击按钮btn然后按住control键拖拽到newC页面,在弹出的segue页面中选择跳转模式即可 优点:操作方便,无代码生成,在storyboard中展示逻辑清晰 缺点:页面较多时不方便查看,团队合作时可维护性差

iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault/单例)

iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单例) 实现了以下iOS页面间传值:1.委托delegate方式:2.通知notification方式:3.block方式:4.UserDefault或者文件方式:5.单例模式方式:6.通过设置属性,实现页面间传值 在iOS开发中,我们经常会遇到页面间跳转传值的问题,现归纳总结一下: 情况1:A页面跳转到B页面 方法: 在B页面的控制器中,编写对应的属性,在A页面跳转到B页面的地方,给

iOS页面间传值的方式

实现了以下iOS页面间传值:1.委托delegate方式:2.通知notification方式:3.block方式:4.UserDefault或者文件方式:5.单例模式方式:6.通过设置属性,实现页面间传值 在iOS开发中,我们经常会遇到页面间跳转传值的问题,现归纳总结一下: 情况1:A页面跳转到B页面 方法: 在B页面的控制器中,编写对应的属性,在A页面跳转到B页面的地方,给B的属性赋值即可 //SecondViewController.h @property(nonatomic) NSInt

iOS页面间跳转的性能优化(二)

续言 在页面间跳转的性能优化(一)中介绍了一些基础知识,讲述了情形一与情形二的优化方式及原理,但有许多人对情形二最后两种处理方式的原理表示不理解,不清楚处理过程,接下来会详细分步地讲述这两种方式的原理,如果你还没看过页面间跳转的性能优化(一),请先阅读. 点击下载Demo,或https://github.com/IOSDelpan/SmoothTransitionDemo. 页面间的跳转大致分为几个任务:1.生成将即显示的页面视图:2.生成我们所需要的UI元素:3.生成页面跳转的动画:而这几个任

iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单例)

实现了以下iOS页面间传值:1.委托delegate方式:2.通知notification方式:3.block方式:4.UserDefault或者文件方式:5.单例模式方式:6.通过设置属性,实现页面间传值 在iOS开发中,我们经常会遇到页面间跳转传值的问题,现归纳总结一下: 情况1:A页面跳转到B页面 方法: 在B页面的控制器中,编写对应的属性,在A页面跳转到B页面的地方,给B的属性赋值即可 //SecondViewController.h @property(nonatomic) NSInt

页面间跳转的性能优化(一)

前言 现在App的页面越来越复杂,页面初始化的工作越来越多,加载页面所需的时间也随之增长,如果页面加载的时间过长,这将会影响App的流畅度及用户体验,我们需要解决这一问题.观察过一些日常使用的App,页面间跳转的性能问题总结为以下三种情形: 1).A页面跳转到B页面,由于B页面需要加载大量的数据,所以导致页面跳转延迟. 2).A页面跳转到B页面,由于B页面需要加载大量UI元素,所以导致页面跳转延迟. 3).A页面跳转到B页面,由于A或B页面的GPU使用率过高,所以导致面页跳转时出现过场动画不流畅

iOS页面间传值的方式 (Delegate/NSNotification/Block/NSUserDefault/单例)

iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault/单例) iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单例) 实现了以下iOS页面间传值: 1.委托delegate方式:2.通知notification方式:3.block方式:4.UserDefault或者文件方式:5.单例模式方式:6.通过设置属性. 在iOS开发中,我们经常会遇到页面间跳转传值的问题,现归纳总结一

IOS 页面间跳转

常用的就两种 一种通过导航,一种直接跳 第一种 直接跳转 思路大致就是new一个目的页面,然后设置下页面跳转动画 中间还可以做点目的页面的数据初始化: ValueInputView *valueView = [[ValueInputView alloc] initWithNibName:@"ValueInputView"bundle:[NSBundle mainBundle]]; valueView.delegate = self; [valueView setModalTransit

mui键盘收起、页面的跳转方式2

页面跳转方式一: mui.openWindow({ url : 'mspck.jsp?openid='+ data.openid + '&ddbh=' + data.ddbh, id : 'mspck.jsp' }); 页面跳转方式二: window.location.href = '<%=request.getContextPath() %>/orderAction/mspOrderingQuery2.action?openid='+ data.openid + '&ddbh