iOS - pushViewController与presentModalViewController的区别

Oli*_*ver 24 cocoa-touch uinavigationcontroller pushviewcontroller presentmodalviewcontroller ios

是什么beetween调用差异presentModalViewControllerpushViewController,当:

  • 动画设置为NO(即使是,这只是一个可以更改的动画风格).
  • 在呈现模态视图时定义了导航控制器,因此它也可以通过调用堆栈导航,....

这只是为了能够从第一个推出的视图回来吗?Woooaaaaaa .....

我想差异在于其他地方和更深层次.不是吗?

aro*_*oth 17

忽略过渡/动画以及幕后事物的结构(aleph_null的alswer提供了很好的讨论),唯一面向用户的区别是能够使用导航栏自动返回到前一个视图.

如果您使用,pushViewController您将在导航栏中自动获得"返回"按钮.如果你不使用presentModalViewController,通常必须实现自己的控件和/或回调来处理解雇控制器.

从概念上讲,模态表示风格通常用于无法离开的原子任务(即,您要么完成任务,要么取消,并且在您执行其中之一之前,您无法在应用程序中执行任何其他操作).

如果你想知道为什么首先有差异,我不能说.就个人而言,我认为提供统一API以便从一个控制器移动到另一个控制器(如cocos2d或Android)的框架更有意义.


ale*_*ull 13

最重要的区别在于语义.模态视图控制器通常表示用户必须提供某些信息或执行某些操作.此链接更深入地解释了它:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html

这是他们谈论的另一个不那么抽象的差异:

"当您呈现模态视图控制器时,系统会在执行演示的视图控制器和呈现的视图控制器之间创建父子关系.具体来说,执行演示的视图控制器更新其modalViewController属性以指向其呈现(子)视图控制器.类似地,呈现的视图控制器更新其parentViewController属性以指向呈现它的视图控制器.

另见这个帖子:为什么"现在的模态视图控制器"?