博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
三种ViewController跳转的异同
阅读量:7237 次
发布时间:2019-06-29

本文共 3375 字,大约阅读时间需要 11 分钟。

- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion

MainVC *mainVC = [[MainVC alloc] init];[self presentViewController:mainVC animated:YES completion:nil];

这种方式一般出现在需要使用者完成某件事情,如输入密码、增加资料等操作后,才能(回到跳转前的控制器)继续。例如系统的WIFI连接输入密码提示。默认动画是从下至上。

 

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated

这种方式一般是使用者浏览资料,继而可以前进到下一个页面或回到上一个页面。默认动画是从右至左。

 

- (void)addChildViewController:(UIViewController *)childController

这个方法出现在iOS5以后,通过它即使不使用NavigationController也能够实现view hierarchy。有以下优点:

1.页面逻辑很清晰,相应的View对应相应的ViewController。

2.当某个子View没有显示时,将不会被Load,减少了内存的使用。
3.当内存紧张时,没有Load的View将被首先释放,优化了程序的内存释放机制。

#import "ViewController.h"#import "FirstVC.h"#import "SecondVC.h"#import "ThirdVC.h"@interface ViewController (){    FirstVC *firstVC;    SecondVC *secondVC;    ThirdVC *thirdVC;}@property (weak, nonatomic) IBOutlet UIView *contentView;@property (strong, nonatomic) UIViewController *currentVC;@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view, typically from a nib.        firstVC = [[FirstVC alloc] init];    secondVC = [[SecondVC alloc] init];    thirdVC = [[ThirdVC alloc] init];        [self addChildViewController:firstVC];    [self addChildViewController:secondVC];    [self addChildViewController:thirdVC];        [self.contentView addSubview:thirdVC.view];        self.currentVC = thirdVC;}- (IBAction)onClick:(id)sender {    if(self.currentVC==firstVC && [sender tag]==1) {        return;    }        if(self.currentVC==secondVC && [sender tag]==2) {        return;    }        if(self.currentVC==thirdVC && [sender tag]==3) {        return;    }        UIViewController *oldVC = self.currentVC;        switch ([sender tag]) {        case 1: {            [self transitionFromViewController:self.currentVC toViewController:firstVC duration:1 options:UIViewAnimationOptionTransitionCurlUp animations:^{                            } completion:^(BOOL finished) {                if(finished) {                    self.currentVC = firstVC;                }                else {                    self.currentVC = oldVC;                }            }];        }        break;        case 2: {            [self transitionFromViewController:self.currentVC toViewController:secondVC duration:1 options:UIViewAnimationOptionTransitionCurlUp animations:^{                            } completion:^(BOOL finished) {                if(finished) {                    self.currentVC = secondVC;                }                else {                    self.currentVC = oldVC;                }            }];        }        break;        case 3: {            [self transitionFromViewController:self.currentVC toViewController:thirdVC duration:1 options:UIViewAnimationOptionTransitionCurlUp animations:^{                            } completion:^(BOOL finished) {                if(finished) {                    self.currentVC = thirdVC;                }                else {                    self.currentVC = oldVC;                }            }];        }        break;        default:            break;    }}- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}@end

转载于:https://www.cnblogs.com/holyday/p/9107455.html

你可能感兴趣的文章
Spring+Struts+Ibatis的配置
查看>>
git 配置多个SSH-Key(转)
查看>>
IBatis.Net学习笔记七--日志处理
查看>>
jquery表单内容过滤
查看>>
实现 select中指定option选中触发事件
查看>>
python字典
查看>>
lucene-SpanNotQuery和SpanOrQuery交迭与全局跨度
查看>>
linux sendmail 邮件服务器架设
查看>>
上mongodb创建一些吸取的经验教训指数
查看>>
存储过程中的when others then 和 raise
查看>>
Android资源之图像资源(图层图像资源)
查看>>
基于HttpClient 4.3的可訪问自签名HTTPS网站的新版工具类
查看>>
Linux学习资料
查看>>
ArcGIS 10.2 三维分析工具箱部分工具不能用
查看>>
ORACLE TO_CHAR函数格式化数字的出现空格的原因
查看>>
5-05. QQ帐户的申请与登陆(25)(map运用)(ZJU_PAT)
查看>>
怎样高效编写可维护代码?
查看>>
Android(Lollipop/5.0) Material Design(四) 创建列表和卡片
查看>>
JAVA里的字符串,String 类简单介绍
查看>>
iOS开发-UIImageView高效设置Radius
查看>>