2015-07-09 42 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