Създайте лента с раздели като част от приложение, базирано на навигация

Все още не съм намерил пример, който прави това. Клиентът иска приложение, базирано на навигация, където два раздела (по един навигационен екран) трябва да имат няколко изгледа, контролирани от лента с раздели. Имам затруднения с настройването на логиката за свързване на всички елементи и осигуряване на смисъл в потока (напр. натискането на бутона за връщане назад на лентата за навигация на някой от изгледите с раздели ще доведе обратно до същия екран).


person Jan K    schedule 15.07.2011    source източник
comment
опитвате ли се да направите нещо като приложението на AT&T? Не съм сигурен дали мога да разбера въпроса ви   -  person Nitin Alabur    schedule 15.07.2011
comment
Не знам какво прави приложението AT&T. По принцип имам навигационен контролер като мой rootcontroller и се нуждая от начин да създам и контролирам лента с раздели (или две) някъде дълбоко в дървото за навигация, на един навигационен екран.   -  person Jan K    schedule 18.07.2011


Отговори (3)


Отговорих на подобен въпрос неотдавна (ако разбирам правилно въпроса ви). Това ще добави лента с раздели като основен контролер и всеки раздел има свой собствен навигационен контролер.

Правилният дизайн модел за изгледи за навигация с раздели?

РЕДАКТИРАНЕ


От документация на UITabBarController

Тъй като класът UITabBarController наследява от класа UIViewController, контролерите на лентата с раздели имат свой собствен изглед, който е достъпен чрез свойството изглед. Когато разгръщате интерфейс на лента с раздели, трябва да инсталирате този изглед като корен на вашия прозорец. За разлика от други контролери за изглед, интерфейсът на лентата с раздели никога не трябва да се инсталира като дете на друг контролер за изглед.

person LuckyLuke    schedule 15.07.2011
comment
Това е полезно, но не точно това, което търсех. За да изясня това, имам контролер за навигация като мой rootcontroller и се нуждая от начин да създам и контролирам лента с раздели (или две) някъде дълбоко в дървото за навигация, на един навигационен екран. - person Jan K; 18.07.2011
comment
@John: А, добре, ще актуализирам отговора и ще видите защо не трябва да правите това, ако имате нужда от подобно поведение, трябва да използвате лентата с инструменти, но знам, че това не е същото. Опитах се да използвам UITabBarController дълбоко в вложена йерархия, но ще получите предупреждения за ротация и автоматичните връзки между контролерите за изглед също няма да работят правилно. За жалост. - person LuckyLuke; 18.07.2011

Както @Jolly good спомена, Apple HIG предлага да не се правят подобни реализации.

Единственият друг начин, който мога да предложа, е да опитате да внедрите персонализиран контролер за изглед, който изглежда/се държи като контролер на табове и да използвате това.

Друг хак, за който се сещам, не съм сигурен дали ще работи или ако е възможно, създайте tabbarcontrller по обичайния начин и след това задайте свойството hideBottomBar и направете долната лента видима само когато искате да бъде видима.

person Nitin Alabur    schedule 19.07.2011

Възможно е, въпреки документацията, цитирана от @Jolly good.

Като пример от реалния свят, позволете ми да опиша една моя игра. Състои се от UITabBarController (UITBC) и UINavigationController (UINC). „Основният“ прозорец на играта е основният изглед на UINC и когато играта е активна, тя скрива както лентата с раздели, така и лентата за навигация, за да увеличи максимално екрана (не е необходимо за iPad, но все пак...) .

Когато играта е неактивна (на пауза, между кръгове и т.н.), тя избутва UITBC върху лентата за навигация. Той също така казва на UITBC да направи определен VC избран. Това позволява достъп до допълнителните екрани (Информация, Резултати, Инструкции, Настройки и т.н.) и играчът може да навигира с помощта на лентата с раздели. В допълнение към допълнителните изгледи на лентата с раздели е контролерът на играта, който просто изважда UITBC от навигационната лента, за да се върне към изгледа на играта, за да отмените паузата, да отидете на следващия кръг и т.н. (Очевидно UITBC се кешира в игра VC, така че да може да бъде върнат назад, когато е необходимо.)

Използвайки този вид логика, е възможно да смесвате и съпоставяте контролери на лентата с раздели и лентата за навигация за сложна навигация. Можете да се разминете с това за игри; просто се уверете, че всяко приложение, което не е игра, следва HIG на Apple, за да не обърка потребителя.

Надявам се това да помогне.

person lar3ry    schedule 19.07.2011