presentModalViewController方法,是iOS提供的一种ViewController之间的跳转方式:
1. presentModalViewController方法的作用是将一个视图控制器以模态的方式展示在另一个视图控制器的上面,就像在一个新的窗口中打开页面;
2. 调用presentModalViewController方法时,需要传入一个视图控制器参数,表示需要要弹出的控制器;
3. presentModalViewController 方法会导致在被调用之前创建的导航控制器被释放,新的视图控制器则将会被放入导航控制器堆中,这样用户才能看到新视图控制器;
4. 被弹出的视图控制器会覆盖住当前的视图,只有当新视图控制器被dismiss时,当前视图控制器才会重新出现;
5. 调用presentModalViewController方法后,返回按钮默认会是dismiss模态视图的操作;
6. 调用presentModalViewController时,会自动添加新视图控制器的导航栏到导航控制器堆中,并且这个导航栏的颜色会和上一个视图控制器的导航栏一致;

7. 调用presentModalViewController 方法后,会默认隐藏当前视图控制器的tabbar;
8. 调用presentModalViewController方法支持传参,即在被调用的视图中可以拿到上一个视图传来的参数;
9. 可以使用代理方式传参,即在调用者先设置上一个视图的代理,然后再调用presentModalViewController,这样就可以在被调用的视图中获取到当前调用者传过来的参数;
10. 调用presentModalViewController,会将当前视图控制器上的所有数据进行持久化,从而使得当前视图上的数据能够在被调用的视图中被使用;
11. 在iOS4及更低版本中,presentModalViewController会将被弹出的视图控制器覆盖整个屏幕,但在iOS 5及更高版本中,presentModalViewController只会覆盖当前视图控制器的视图部分;
12. presentModalViewController 方法会触发当前视图控制器的viewDidDisappear 生命周期(当新视图控制器被弹出时),以及被调用的视图控制器的viewDidAppear 生命周期(当新视图控制器被弹出时);

13. presentModalViewController 方法可以用于模态对话框、加载URL以及加载图片;
14. 在presentModalViewController 方法中可以使用completionHandler参数,以便在新视图控制器被dismiss 后在当前视图中添加一些处理内容。
前言:presentmodalviewcontroller是苹果官方提供的基于MVC架构开发iOS程序的一种视图转换方式。主要通过对控制器的presentModalViewController方法来实现的,在APP开发中经常运用。
一、presentmodalviewcontroller的功能:
1、presentmodalviewcontroller可以用来实现两个视图之间的无缝切换,能使APP看起来更加流畅;
2、使用这种方式实现视图切换时,不需要担心视图层级的嵌套问题,可以简单保证视图的层级切换。
3、它可以有效的把现在的视图遮掩掉,让用户只能浏览二者之间的选择;
二、presentmodalviewcontroller的注意事项:
1、需要记住在使用presentModalViewController时一定要把层级关系处理好,小心给已有视图添加重复视图;

2、一定要记住dismissModalViewControllerAnimated以便退出子视图,并能保证其层级准确;
3、记住把newViewController作为presentModalViewController;
三、如何使用presentmodalviewcontroller:
1、首先创建新的视图控制器:ViewController *newViewController = [[ViewController alloc] init];
2、调用控制器的presentModalViewController方法:[self presentModalViewController: newViewController animated:YES];
3、返回上一级回到之前的视图时,调用dismissModalViewControllerAnimated方法:[self dismissModalViewControllerAnimated:YES];
综上所述,presentmodalviewcontroller作为苹果开发官方给出的方法,可以用来把现在的视图界面遮掩掉,并通过presentModalViewController方法和dismissModalViewControllerAnimated方法达到无缝切换的效果,满足APP程序的需要。当然,使用时也得注意重复视图层级等方面的问题,以实现预期效果。







