在實際開發中,如果要彈出視圖:
我們常用到presentModalViewController方法和dismissModalViewControllerAnimated方法。
presentModalViewController:彈出視圖
dismissModalViewControllerAnimated:隱藏視圖
我們假如A彈出B
就是說,A負責隱藏B;如果我們在B中調用dismissModalViewControllerAnimated方法,那么編譯器,自動將消息發送給A。
等等,什么消息?
簡單的理解,當執行presentModalViewController: 方法:在A彈出B時:
執行A的viewWillDisappear方法,
通知B執行自己的viewWillAppear方法和viewDidAppear方法
執行A的viewDidDisappear方法
當執行dismissModalViewControllerAnimated方法:隱藏B時:
執行B的viewWillDisappear
通知A執行自己的viewWillAppear方法和viewDidAppear方法
執行B的viewDidDisappear方法
[self presentViewController:navigationController animated:YES completion:^(void){// Code}];
[self dismissViewControllerAnimated:YES completion:^(void){// Code}];
新接口的差別是提供了一個參數,允許你傳入一個block。這個block的回調方法在VC的viewWillDisappear方法后調用。也就是被隱藏的VC對象被釋放后運行回調。
這樣做的好處:可以方便做多個UI效果之間的銜接和轉換。