presentViewController
请说出和的区别UiNavigationController
?我可以使用presentViewController
而不是UINavigationController
在应用程序中导航不同的视图吗?使用的场景是什么?
4 回答
presentViewController
提供一种机制来显示所谓的模态视图控制器;即,视图控制器将通过叠加在呈现控制器之上来完全控制您的 UI。
UINavigationController
提供了一种更灵活的机制,您可以在其中推送一个新控制器,然后将其弹出,以便以有序的方式返回到前一个控制器。想象一下,导航控制器中的控制器只会构建一个从左到右的序列。
我认为这presentViewController
最适合一次只呈现一个视图控制器的情况。你当然可以用它来堆叠更多的视图控制器(因此有点“模仿”穷人的导航控制器),但我敢打赌,你会很快发现某些东西没有按预期工作。
具体来说,这种限制的一个示例如下:当您关闭模态视图控制器(为了“关闭”它)时,所有模态呈现的视图控制器(来自同一个呈现控制器)也将立即被解散。因此,您根本无法实现类似“返回”/导航的功能。
所以,这取决于你想要做什么。
AUINavigationController
是UIViewController
管理视图控制器堆栈并添加后退按钮等的子类。
presentViewController
是UIViewController
您用来呈现模态视图控制器的类的方法。
为UINavigationController
您维护一个导航堆栈。然后,您可以浏览分层内容。
如果您使用UIViewControllers
presentViewController
方法,您基本上只是替换视图控制器。没有为您维护导航堆栈。
UINavigationController 是一个类,presentViewController 是 UIViewController (iOS 5+) 的一个实例方法,其中 UINavigationController 是一个子类。
pushViewController 是与 presentViewController 类似的方法。它是 UINavigationController 的实例方法,适用于 iOS 2 +