iOS入门-07UIViewController

概述

UIViewController作为页面和Android中的Activity以及Flutter中的Route意义相同,每一个UIViewController相当于一个页面。

本文重点

  • UIViewController创建
  • UIViewController生命周期
  • UIViewController跳转

示例

UIViewController创建

在日常开发中我们能够操作的整个应用程序的启动类为AppDelegate,而新建工程中ViewController则是第一个页面,我们什么都不用处理只要从ViewController开始写起就可以了。ViewController作为整个app的主页面也是第一个页面。当然如果你是在想换掉它也是可以的,自己去写一个类继承UIViewController然后添加为根视图控制器中。

一个简单的例子:从一个页面跳转到另一个页面,代码如下很简单,主要看注释并自己运行了解各个生命周期函数调用的时机。

第一个页面:

#import "ViewController.h"
#import "SecondViewController.h"

@interface ViewController ()

@end

@implementation ViewController
//页面第一次加载时调用,只调用一次
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    NSLog(@"viewDidLoad");
    //添加个button,点击跳转到新页面
    UIButton* btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    
    btn.frame = CGRectMake(40, 40, 100, 50);
    
    [btn setTitle:@"to second" forState:UIControlStateNormal];
    //给button添加点击事件
    [btn addTarget:self action:@selector(click) forControlEvents:(UIControlEventTouchUpInside)];
    
    [self.view addSubview:btn];
}

-(void) click{
    //将要跳转新页面
    SecondViewController* sVC = [SecondViewController new];
    //设置新页面是全屏
    sVC.modalPresentationStyle = UIModalPresentationFullScreen;
    //跳转到新页面
    [self presentViewController:sVC animated:YES completion:nil];
}

//视图将显示
-(void) viewWillAppear:(BOOL)animated{
    NSLog(@"viewWillAppear");
}
//视图显示瞬间
-(void) viewDidAppear:(BOOL)animated{
    NSLog(@"viewDidAppear");
}
//视图将消失
-(void) viewWillDisappear:(BOOL)animated{
    NSLog(@"viewWillDisappear");
}
//视图消失瞬间
-(void) viewDidDisappear:(BOOL)animated{
    NSLog(@"viewDidDisappear");
}

//内存过低警告接受函数
-(void) didReceiveMemoryWarning{
    [super didReceiveMemoryWarning];
    
}
@end

第二个页面:

创建一个新UIViewController文件很简单,如下操作
选中要新建文件的目标文件夹,本例子中使用根文件夹,然后File->New->File

然后选择如下
iOS入门-07UIViewController_第1张图片
点击Next
iOS入门-07UIViewController_第2张图片

ok,创建完毕,如下

#import "SecondViewController.h"

@interface SecondViewController ()

@end

@implementation SecondViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    //添加一个有颜色的view
    UIView* view = [UIView new];
    
    view.frame = CGRectMake(100, 100, 100, 100);
    
    view.backgroundColor = [UIColor redColor];
    
    self.view.backgroundColor = [UIColor whiteColor];
    
    [self.view addSubview:view];
}

//点击屏幕任意一点出发此回调
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    //退出当前页面
    [self dismissViewControllerAnimated:YES completion:nil];
}
@end

你可能感兴趣的:(iOS)