视图控制器

UIViewController:视图控制器, 作用: 控制视图显⽰, 响应事件。分担AppDelegate的工作, 实现模块独立,提高复⽤用性.

视图控制器可以控制视图大小变换, 布局视图, 相应事件, 检测以及处理内存警告, 处理屏幕的旋转.

⾃定义视图类继承UIView。在初始化方法中添加子视图控件。重写controllerloadView方法。创建⾃定义视图对象,并指定为controllerview。将子视图控件对象设置为自定义视图类的属性,在viewDidLoad⽅法中进行设置:添加action、设置delegate等等。在controller中添加按钮点击事件实现和代理⽅方法的实现.

视图控制器的生命周期:
1. 初始化一个视图   -( instancetype )init 
2. 加载视图                 - ( void )loadView
3. 视图加载完成    - ( void )viewDidLoad 
4. 视图将要显示     - ( void )viewWillAppear:( BOOL )animated
5. 视图已经显示    - ( void )viewDidAppear:( BOOL )animated
6. 视图将要消失 (下一个界面显示时才会实现)  - ( void )viewWillDisappear:( BOOL )animated
7. 视图已经消失 ( 下一个界面显示时才会实现 - ( void )viewDidDisappear:( BOOL )animated

代码如下:
1. 创建一个视图控制器:

//创建视图控制器
    RootViewController *rootVC = [[RootViewController alloc] init];
    //把rootVC设置成根视图控制器
    self.window.rootViewController = rootVC;
    [rootVC release];
2.

/加载视图, 加载自身的self.view
//用加载视图这个方法实现自定义视图
- (void)loadView {
    //[super loadView]; 继承
    // 创建一个view给视图控制器的self.view
    MyView *myView = [[MyView alloc] initWithFrame:[UIScreen mainScreen].bounds];
   
    [myView.button addTarget:self action:@selector(buttonClick:) forControlEvents:(UIControlEventTouchUpInside)];
    UITextField *temp = (UITextField *)[myView viewWithTag:2];
    temp.delegate = self;
    // 给视图控制器的属性view赋值.
    self.view = myView;
   //与[super loadView]成对出现 
   // [self.view addSubview:myView];


3. 

- (void)viewDidLoad {
    [super viewDidLoad];
     // Do any additional setup after loading the view.
    
    //初始化一个模型
    Person *person = [[Person alloc] init];
    person.name = @"拐球之人";
    person.sex = @"是张杰";
    
    MyView *myView = [[MyView alloc] initWithFrame:[UIScreen mainScreen].bounds];
    myView.backgroundColor = [UIColor colorWithWhite:0.945 alpha:1.000];
    myView.textField.delegate = self;
    //利用模型给视图赋值
    myView.label.text = person.name;
    myView.textField.text = person.sex;
    
    
    [self.view addSubview:myView];
    [myView release];
    [person release];
4. 屏幕旋转

    /**

     *屏幕旋转:

     1. 允许修改旋转

     2. 设值旋转方向

     3. 检测屏幕旋转

     */

//设值允许旋转
- (BOOL)shouldAutorotate {
    return YES;
}
//设值各个方向都能旋转
- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskAll;
}
//检测屏幕旋转
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
    NSLog(@"%@", NSStringFromCGSize(size));
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    NSLog(@"内存警告了");
    //内存警告了, 我们需要把不用的view视图移除
    //1. 这个视图必须被加载过
    //2. 不能是当前显示的窗口
    if ([self isViewLoaded] == YES && !self.view.window) {
        self.view = nil;
    } else {
        NSLog(@"这个视图可能没有被加载过, 或者是当前显示的窗口");
    }
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值