1

Я, похоже, еще недостаточно разбираюсь в UITabBar, UITabBarController и контроллере навигации, чтобы делать то, что я хочу делать. Я надеюсь, что кто-то может дать некоторые рекомендации.iOS Navigation & TabBarControllers

У меня есть всего 8 VC. Я хотел бы, чтобы пять из них были выбраны из TabBar на первом (стартовом) экране, а выбор любого элемента будет загружать определенный VC. Как только VC будет выбран, он будет загружаться, и мне нужно иметь РАЗЛИЧНЫЙ набор из примерно 5 из 8 возможных вариантов в качестве потенциальных мест назначения. То же самое для любого другого.

Таким образом, данному VC понадобится его собственный TabBar и может иметь ЛЮБОЙ из 8 VC на нем. По сути, я хочу, чтобы пользователи могли переключаться с одного VC на другой с помощью панели вкладок, не возвращаясь к корневому VC.

Я как-то ясно понимаю, как использовать tabbarcontroller на экране запуска для загрузки представлений, которые я сначала хочу. Но, учитывая загруженный VC, может потребоваться другой выбор возможных VC на панели вкладок ITS, как это установить?

Напомним, что у меня есть

ROOT VC имеет следующие ВЫБОРА

VC-A 
VC-B 
VC-C 
VC-D 
VC-D 

Если вы выбираете VC-A, вы будете иметь следующие ВК-A

VC-C 
VC-D 
VC-E 
VC-F 

ЕСЛИ ВЫ ВЫБИРАЕТЕ VC-B, ВЫ ДОЛЖНЫ СЛЕДУЮЩИЕ ВЫБОРЫ ОТ VC-B

VC-A 
VC-C 
VC-D 
VC-E 
VC-R 

И так.

Я хочу, чтобы все эти варианты базировались на UITabBar или UITabBarController. Поскольку каждый VC может потребовать много памяти, я также обеспокоен тем, что, если, например, VC-B выбирает VC-D, я могу уничтожить VC-B (или, по крайней мере, часть его реализации, чтобы перезагружаться по мере необходимости) для сохранения памяти (при необходимости переустанавливая).

Остановилось. Надеюсь, я объяснил, что я пытаюсь сделать. Кроме того, не используйте ни один из NIB; все кодируется программно.

Заранее благодарим за любую помощь, которую любой может предоставить. Я открыт для любых & всех предложений.

ответ

2

Я думаю, что лучшим подходом было бы использовать один UITabBarController. Инициализируйте его своими первыми 5 VC и установите его делегат. Ваш UITabBarControllerDelegate должен реализовать tabBarController:didSelectViewController:.Внутри этого метода делегата обновите VC в своем UITabBarController, в соответствии с которым выбран VC, чтобы были показаны только VC, относящиеся к выбранному VC.

С другой стороны, я бы настоятельно советовал ему. Такая навигационная структура представляется очень сложной для пользователя. Возможно, вы могли бы сделать лучшее приложение, упростив свою структуру.

+0

Я закончил тем, что использовал этот метод, и он отлично работал. Хотя, я придерживался оригинального дизайна навигации, так как пользователи должны иметь возможность менять VC на лету, не возвращаясь к корневому VC. Но все эти ответы были полезны для меня. Благодарю. – RegularExpression

1

Что вам нужно, это UITabBarController для каждой вкладки множества А UINavigationController (вы можете сделать это каждое простой в раскадровки) в качестве корня для каждого UINavigationController установить контроллер представления корня (первый контроллер вида, что вы хотите отобразить когда пользователь впервые нажимает на эту вкладку).

После того, как вы выполните вышеуказанное предложение, у вас будет 5 панелей вкладок с 5 UINavigationControlles с контроллерами корневых представлений, теперь вы можете определить любую навигацию, которая вам нравится для каждой вкладки (push/pop).

2

Попробуйте

UITabBarController *tabBar = [[UITabBarController alloc]init]; 
UINavigationController* nav1=[[UINavigationController alloc]init]; 
UINavigationController* nav2=[[UINavigationController alloc]init]; 
UINavigationController* nav3=[[UINavigationController alloc]init]; 

FirstVC *ObjFirstVC = [[FirstVC alloc] init]; 
nav1.viewControllers=[NSArray arrayWithObjects:ObjFirstVC, nil]; 
[email protected]"First"; 

SecondVC *ObjSecondVC = [[SecondVC alloc] init]; 
nav2.viewControllers=[NSArray arrayWithObjects:ObjSecondVC, nil]; 
[email protected]"Second"; 

ThirdVC *ObjThirdVC = [[ThirdVC alloc] init]; 
nav3.viewControllers=[NSArray arrayWithObjects:ObjThirdVC, nil]; 
[email protected]"Third"; 

tabBar.viewControllers=[NSArray arrayWithObjects:nav1,nav2,nav3,nil]; 

 Смежные вопросы

  • Нет связанных вопросов^_^