UINavigationController vs viewController嵌入在NavigationController中

时间:2016-03-14 06:30:17

标签: ios objective-c

我正在尝试使用iOS并在构建应用程序时,我想到一个问题是UINavigationController与嵌入在NavigationController中的viewController之间有什么区别。

在使用UINavigationController时,我们推送和弹出视图。 在使用viewController时我们呈现和解散。

那么哪个应用程序比另一个更优秀的应用程序。

4 个答案:

答案 0 :(得分:1)

UINavigationController用于您希望在应用程序中来回移动的位置。通常,当您在应用程序中的每个深度级别中导航更详细的信息时,将使用导航控制器。 enter image description here

显示抛光信息时,通常首选

UIViewController。在UINavigationController中,通常它是您在控制器中推送的最后一个控制器

答案 1 :(得分:0)

我认为你真的在描述同一枚硬币的两面。只有一种方法可以使用UINavigationViewContorller。它被称为容器视图控制器,它的工作是推送和弹出其他UIViewControllers。 UINavigationViewController与viewControllers一起使用,而不是视图。

答案 2 :(得分:0)

<强>的UINavigationController: 如果您具有视图控制器的层次结构,那么您就拥有了堆栈视图,那么您需要使用导航控制器。您可以在视图控制器上执行推送和弹出操作,导航控制器是所有ViewController.so的rootViewController,以有序的方式返回到上一个。想象一下,导航控制器中的控制器只是从左到右构建一个序列。

UIViewController:如果您正在使用视图控制器,它将充当presentViewController。 presentViewController提供了一种显示所谓的模态视图控制器的机制;即,一个视图控制器,它将通过叠加在呈现控制器之上来完全控制您的UI。我认为presentViewController最适合一次只显示一个视图控制器。所以你根本无法实现“返回”/导航功能。

答案 3 :(得分:0)

UINavigationController 继承自 UIViewController 。关于这个对象模型的奇怪之处在于UIViewController有一个名为NavigationController的属性。所以对于OO纯粹主义者来说,父母阶级知道它的孩子是有点莫名其妙。但撇开这一点就是UIKit的做法。正如你会发现运行时错误,你不能将UINavigationController放在UINavigationController中

无论何时推送控制器,它都可以通过NavigationController属性访问它可能属于或可能不属于的父UINavigationController。如果控制器不在UINavigationController中,则该属性为null。