如何嵌套UITabBarController

时间:2010-11-16 07:12:10

标签: iphone uitabbarcontroller nested

我正在尝试将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中得到支持。

有什么想法吗?

TIA,

汤姆

2 个答案:

答案 0 :(得分:1)

您可以尝试在应用中使用单个标签栏控制器。当用户单击指向一组新选项卡的选项卡时,请替换单选项卡栏控制器中的所有选项卡。我不确定你“回到”顶级,但我认为你有一些想法。

我不认为这是一个很棒的用户界面,但你可以这样做。

答案 1 :(得分:0)

我认为对您的问题更好的解决方案是将boxView添加到您想要嵌套第二个tabBarController的选项卡中的viewController。然后,您可以将childViewControllers添加到该containerView,并以与tabBarController相同的方式为这些childViewControllers创建自定义segue。这使您可以选择放置新的自定义"标签栏" (我建议使用segmentedControl)在包含containerView的viewController中的任何位置。我认为处理嵌套的tabBarController是一种更可接受的方式。此外,用户不会对tabBar突然改变外观感到困惑。