视图控制器的概念和作用:
视图控制器像一个大管家一样,负责视图的添加,卸载,横竖屏等
每一个界面都由一个视图控制器来管理
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
时间: 2024-09-30 18:39:12