2015-07-09 71 views
0

我对iOS开发非常陌生,在尝试了解UINavigationController对象时遇到困难。我猜大多数应用程序使用它来组织他们的所有窗口,但我不确定。UINavigationController是否适合页面循环?

当应用程序页面是层次结构的成员时,它似乎特别有用,但我的应用程序项目不会以这种方式组织它的页面。相反,它将更像一个周期,例如用4页:

甲 - >乙 - “ç - > d - > A.

是该模式与UINavigationController兼容或做我必须使用一些替代?

+0

一个UINavigationController管理的图控制器(页)的 “栈”,所以它可能是不恰当的。你可以使用UIPageViewController或UIScrollView和UIPageController – Paulw11

回答

0

您可以自由地将同一控制器类的多个实例推送到UINavigation控制器上,但是它维护的结构是堆栈。您不能在堆栈中多次重复使用相同的控制器实例,并且堆栈中的每个控制器都保留在内存中。您可能不希望构建任意深度的堆栈,因为它们将占用大量资源,并且许多级别的“后退”导航会变得迷失方向。

参见pushViewController:animated:其中指出:

视图控制器推到堆栈上。该对象不能是标签栏控制器。如果视图控制器已经在导航堆栈上,则此方法会引发异常。

0

一个UINavigationController不是因为UINavigationController行为就像一个堆栈建筑UIViewControllers一个无休止的循环是个好主意。每推UIViewController将被保留并消耗内存。此外,重用UIViewControllers来构建循环并不是(很容易)。

这可以归档为UIPageViewController它允许重复使用所有的UIViewControllers

https://developer.apple.com/library/prerelease/ios//documentation/UIKit/Reference/UIPageViewControllerClassReferenceClassRef/index.html

Cycling from last to first (and vice versa) with UIPageViewController