present和dismiss的使用总结

在实际开发中,如果要弹出视图:

我们常用到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效果之间的衔接和转换。

你可能感兴趣的:(present和dismiss的使用总结)