presentViewController和UINavigationController之间的区别?

请告诉presentViewControllerUiNavigationController之间的区别? 我可以使用presentViewController而不是UINavigationController在应用程序中导航不同的视图? 什么情况下使用?

presentViewController提供了一种机制来显示所谓的模态视图控制器; 即视图控制器将通过叠加在呈现控制器之上来完全控制您的UI。

UINavigationController提供了一个更灵活的机制,您可以推送一个新的控制器,稍后再popup它,以便以有序的方式返回到前一个控制器。 想象一下,导航控制器中的控制器将从左到右build立一个序列。

我认为presentViewController是最适合与一次只提供一个视图控制器一起使用。 你可以肯定地使用它来堆叠更多的视图控制器(并且因此类似于“模仿”穷人的导航控制器),但是我敢打赌,你会很快find一些不像你期望的那样工作的东西。

具体来说,这种限制的一个例子如下:当你closures一个模式视图控制器(为了“closures”它),你的所有模态显示的视图控制器(来自同一个呈现控制器)也将被立即解散。 所以你根本无法实现一个“返回”/导航function。

所以,这取决于你正在尝试做什么。

UINavigationControllerUIViewController一个子类,用于pipe理一堆视图控制器,并添加一个后退button等。

presentViewController是用来呈现模态视图控制器的UIViewController类的一个方法。

UINavigationController为你维护一个导航栈。 然后您就可以浏览分层内容。

http://developer.apple.com/library/ios/#documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html

如果你使用UIViewControllers presentViewController方法,你基本上只是更换视图控制器。 没有导航堆栈为您维护。

UINavigationController是一个类,presentViewController是UIViewController(iOS 5 +)的一个实例方法,其中UINavigationController是一个子类。

pushViewController是presentViewController的一个可比较的方法。 这是iOS 2 +的UINavigationController实例方法