視圖控制器的概念和作用:
視圖控制器像一個大管家一樣,負責視圖的添加,解除安裝,橫豎屏等
每一個界面都由一個視圖控制器來管理
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
轉載于:https://www.cnblogs.com/studyController/p/5634150.html