我对iOS开发非常陌生,在尝试了解UINavigationController
对象时遇到困难。我猜大多数应用程序使用它来组织他们的所有窗口,但我不确定。UINavigationController是否适合页面循环?
当应用程序页面是层次结构的成员时,它似乎特别有用,但我的应用程序项目不会以这种方式组织它的页面。相反,它将更像一个周期,例如用4页:
甲 - >乙 - “ç - > d - > A.
是该模式与UINavigationController
兼容或做我必须使用一些替代?
我对iOS开发非常陌生,在尝试了解UINavigationController
对象时遇到困难。我猜大多数应用程序使用它来组织他们的所有窗口,但我不确定。UINavigationController是否适合页面循环?
当应用程序页面是层次结构的成员时,它似乎特别有用,但我的应用程序项目不会以这种方式组织它的页面。相反,它将更像一个周期,例如用4页:
甲 - >乙 - “ç - > d - > A.
是该模式与UINavigationController
兼容或做我必须使用一些替代?
您可以自由地将同一控制器类的多个实例推送到UINavigation控制器上,但是它维护的结构是堆栈。您不能在堆栈中多次重复使用相同的控制器实例,并且堆栈中的每个控制器都保留在内存中。您可能不希望构建任意深度的堆栈,因为它们将占用大量资源,并且许多级别的“后退”导航会变得迷失方向。
参见pushViewController:animated:其中指出:
视图控制器推到堆栈上。该对象不能是标签栏控制器。如果视图控制器已经在导航堆栈上,则此方法会引发异常。
一个UINavigationController
不是因为UINavigationController
行为就像一个堆栈建筑UIViewControllers
一个无休止的循环是个好主意。每推UIViewController
将被保留并消耗内存。此外,重用UIViewControllers
来构建循环并不是(很容易)。
这可以归档为UIPageViewController
它允许重复使用所有的UIViewControllers
。
Cycling from last to first (and vice versa) with UIPageViewController
一个UINavigationController管理的图控制器(页)的 “栈”,所以它可能是不恰当的。你可以使用UIPageViewController或UIScrollView和UIPageController – Paulw11