2015-07-09 5 views
0

Я довольно новичок в разработке iOS, и у меня возникают трудности с попыткой понять объект UINavigationController. Я предполагаю, что большинство приложений используют его для организации всех своих окон, но я не уверен.Является ли UINavigationController подходящим для циклов страниц?

Кажется, что это особенно полезно, когда страницы приложения являются членами иерархии, но мой проект приложения не будет организовывать свои страницы таким образом. Вместо этого, он будет больше похож на цикл, например, с 4-х страниц:

A -> B -> C -> D -> A.

Это модель совместима с UINavigationController или я должен использовать какая-то альтернатива?

+0

UINavigationController управляет "стек" зрения контроллеров (страниц), так что, вероятно, не подходит. Вероятно, вы можете использовать UIPageViewController или UIScrollView с UIPageController – Paulw11

ответ

0

Вы можете нажимать несколько экземпляров одного и того же класса контроллера на контроллер UINavigation, но структура, которую он поддерживает, представляет собой стек. Вы не можете повторно использовать один и тот же экземпляр контроллера несколько раз в этом стеке, и каждый контроллер в стеке остается в памяти. Вероятно, вы не хотите создавать произвольно глубокие стеки, поскольку они будут интенсивными в ресурсах, а многие уровни «обратной» навигации становятся дезориентирующими.

См pushViewController:animated:, который гласит:

Контроллер вид нажать на стек. Этот объект не может быть контроллером панели вкладок. Если контроллер просмотра уже находится в стеке навигации, этот метод генерирует исключение.

0

UINavigationController не является хорошей идеей для создания бесконечный цикл UIViewControllers, поскольку UINavigationController ведет себя как стек. Каждый нажатый 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