【问题标题】:How to nest UITabBarController如何嵌套UITabBarController
【发布时间】:2010-11-16 07:12:10
【问题描述】:

我正在尝试将一个 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,

汤姆

【问题讨论】:

    标签: iphone uitabbarcontroller nested


    【解决方案1】:

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

    我不认为这是一个很棒的 UI,但你可以让它这样工作。

    【讨论】:

    • 有趣的方法。我也不确定这是不是很棒的用户界面,但这是我签约要做的事情:(我见过类似的导航逻辑使用像 UISwitch 这样的控制器来执行子标签栏的功能,通常放在顶部视图。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-03
      • 2016-10-27
      • 1970-01-01
      相关资源
      最近更新 更多