presentViewController和UINavigationController之间的区别?
请告诉presentViewController
和UiNavigationController
之间的区别? 我可以使用presentViewController
而不是UINavigationController
在应用程序中导航不同的视图? 什么情况下使用?
presentViewController
提供了一种机制来显示所谓的模态视图控制器; 即视图控制器将通过叠加在呈现控制器之上来完全控制您的UI。
UINavigationController
提供了一个更灵活的机制,您可以推送一个新的控制器,稍后再popup它,以便以有序的方式返回到前一个控制器。 想象一下,导航控制器中的控制器将从左到右build立一个序列。
我认为presentViewController
是最适合与一次只提供一个视图控制器一起使用。 你可以肯定地使用它来堆叠更多的视图控制器(并且因此类似于“模仿”穷人的导航控制器),但是我敢打赌,你会很快find一些不像你期望的那样工作的东西。
具体来说,这种限制的一个例子如下:当你closures一个模式视图控制器(为了“closures”它),你的所有模态显示的视图控制器(来自同一个呈现控制器)也将被立即解散。 所以你根本无法实现一个“返回”/导航function。
所以,这取决于你正在尝试做什么。
UINavigationController
是UIViewController
一个子类,用于pipe理一堆视图控制器,并添加一个后退button等。
presentViewController
是用来呈现模态视图控制器的UIViewController
类的一个方法。
UINavigationController
为你维护一个导航栈。 然后您就可以浏览分层内容。
如果你使用UIViewControllers
presentViewController
方法,你基本上只是更换视图控制器。 没有导航堆栈为您维护。
UINavigationController是一个类,presentViewController是UIViewController(iOS 5 +)的一个实例方法,其中UINavigationController是一个子类。
pushViewController是presentViewController的一个可比较的方法。 这是iOS 2 +的UINavigationController实例方法