Как вложить UITabBarController - PullRequest
       10

Как вложить UITabBarController

2 голосов
/ 16 ноября 2010

Я пытаюсь вложить UITabBar в другой, например:

UITabBarController *tabController = [[UITabBarController alloc] init];
tabController.delegate = self;

UITabBarController *friendsTabController = [[UITabBarController alloc] init];

FindFriendsViewController *findFriendsController = [[FindFriendsViewController alloc] initWithNibName:@"FindFriendsViewController" bundle:nil];
findFriendsController.rootViewController = self;
UINavigationController *findFriendsNavController = [[UINavigationController alloc] initWithRootViewController:findFriendsController];
findFriendsNavController.tabBarItem.title = NSLocalizedString(@"Add", nil);

friendsTabController.viewControllers = [NSArray arrayWithObjects:friendStreamController, friendListController, findFriendsNavController, nil];

tabController.viewControllers = [NSArray arrayWithObjects:nearbyNavController, friendsTabController, meController, checkInController, logController, nil];

(очевидно, некоторые коды, например, другие вкладки, для краткости опущены)

Когда я делаю это и нажимаю на вкладку «Друзья» на внешней панели вкладок, внутренняя панель вкладок появляется прямо над внешней. Я не хочу этого Мне бы хотелось, чтобы внутренняя панель вкладок занимала место (внизу окна) внешней, когда она выбрана.

Я попытался сделать это, скрыв внешнюю панель вкладок, установив ее скрытой в методе делегата UITabBarController, и я попытался установить рамку внутренней панели вкладок, чтобы вручную расположить ее внизу экрана вот так:

friendsTabController.tabBar.frame = CGRectMake(0, 430, 320, 50);

Когда я скрываю внешнюю панель вкладок, внутренняя панель все равно отображается на том же расстоянии от нижнего края экрана, а внешняя заменяется пустым прямоугольником.

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

Я пытался погуглить, но безрезультатно. Наверняка этот вид навигации не так уж редок? Прежде чем пытаться это сделать, я предполагал, что он будет поддерживаться в SDK.

Есть идеи?

ТИА

Tom

Ответы [ 2 ]

1 голос
/ 16 ноября 2010

Вы можете попробовать использовать в своем приложении один контроллер панели вкладок.Когда пользователь нажимает на вкладку, которая приводит к новому набору вкладок, замените все вкладки в контроллере с одной вкладкой.Я не уверен, что вы переходите «назад» на верхний уровень, но я предполагаю, что вы что-то имеете в виду.

Я не думаю, что это отличный интерфейс, но вы, вероятно, можете заставить его работать таким образом.

0 голосов
/ 16 ноября 2015

Я думаю, что лучшим решением вашей проблемы было бы добавить контейнер ViewView в viewController на вкладке, в которую вы хотели бы вложить вторую tabBarController. Затем вы можете добавить childViewControllers в этот контейнерный просмотр и создать собственный переход к этим childViewControllers почти так же, как это делает tabBarController. Это дает вам возможность поместить новую настраиваемую «панель вкладок» (я рекомендую segmentedControl) в любое место в viewController, содержащем containerView. Я думаю, что это более приемлемый способ обработки вложенного tabBarController. Также пользователь не будет путать таб-бар с внезапно меняющимся внешним видом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...