05_视图控制器_1

视图控制器的概念和作用:

视图控制器像一个大管家一样,负责视图的添加,卸载,横竖屏等

每一个界面都由一个视图控制器来管理

UIViewController是所有视图控制器的父类

每一个视图控制器都自带一个UIView

//在没有创建XIB文件的时候,第3行代码并不会被执行。

//因为执行创建myViewController1的view的前提条件是:1.当前视图控制器的根视图是nil 2.调用了根视图的选择器getter方法

1     myViewController1 *mycontr1 = [[myViewController1 alloc]init];
2     
3     mycontr1.view.backgroundColor = [UIColor yellowColor];
4     
5     self.window.rootViewController = mycontr1;
6     
7     mycontr1.view.backgroundColor = [UIColor greenColor];

模态

模态视图的使用场景:

1.收集用户输入信息

2.临时呈现一些内容,例如广告等

3.临时改变工作模式

4.呈现一个新的view层级

注意:这几种情况都会暂时中断程序正常的执行流程

具体实现:

在第一个.m文件中创建button方法:

1 - (IBAction)buttonInAction:(UIButton *)sender {
2     myViewController2 *myContr2 = [[myViewController2 alloc]init];
3     
4     [self presentViewController:myContr2 animated:YES completion:nil];
5 }

在第二个.m文件中创建button方法:

1 - (IBAction)backAction:(UIButton *)sender {
2     [self dismissViewControllerAnimated:YES completion:nil];
3 }

即实现了简单的一个页面跳转的模态

 

课堂练习 利用代理创建一个模态视图:

首先应该设定一个协议

@protocol presentDelegate <NSObject>

- (void)transmit:(NSString *)transmit;

@end

然后应该在@interface中声明一个代理对象

@property (nonatomic,weak)id<presentDelegate> delegate;

接着在第二个.m文件调用协议方法,将数值传入到第一个视图中

- (void)buttonAction{
    
    [self.delegate transmit:_text.text];
    
    [self dismissViewControllerAnimated:YES completion:nil];
}

在第一个视图中签订一下协议

1 @interface ViewController1 : UIViewController <presentDelegate>

在第一个视图中调用button方法的时候设定代理

1 - (void)buttonAction{
2     
3     ViewController2 *mycontr2 = [[ViewController2 alloc]init];
4     mycontr2.delegate = self;
5     
6     [self presentViewController:mycontr2 animated:YES completion:nil];
7     
8 }

最后实现一下协议方法,将内容接收到,便可以显示到第一个视图中的label中了

1 - (void)transmit:(NSString *)transmit{
2     _label1.text = transmit;
3     
4 }

 @end

posted on 2016-07-01 19:56  LuckyTiger  阅读(116)  评论(0编辑  收藏  举报