没有 TabBarController 的标签栏 - 为情节提要中的标签栏项目添加视图控制器

Posted

技术标签:

【中文标题】没有 TabBarController 的标签栏 - 为情节提要中的标签栏项目添加视图控制器【英文标题】:Tab bar without TabBarController - add View Controller for Tab bar item in storyboard 【发布时间】:2016-04-22 01:19:52 【问题描述】:

我已经向视图控制器添加了一个标签栏(不是 TabViewController),然后向该标签栏添加了一些标签栏项目。

现在我想将其他视图控制器附加到 Storyboard 中的那些标签栏项目。

当我从标签栏项目按 Ctrl + 拖动到视图控制器时,我没有得到任何选项。

请提出一种方法来做到这一点。

【问题讨论】:

***.com/questions/31278709/…的可能重复 【参考方案1】:

我遇到了同样的问题,但是我找不到一种方法来为 viewController 分配它自己的 viewController,就像在 TabViewController 的情况下一样。

我使用容器解决了这个问题。 tabBar 中的每个 tabBarItem 都有一个容器,根据 tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 方法中选择的 tabBarItem 隐藏或显示。

1. 在 StoryBoard 的 UIviewController 中创建容器: Just like this 选择你的 tabBar 和 Ctrl+Drag 来委托类来监听 tabBarDelegate 方法:look here

2. 声明相应的 IBOutlets,包括您的 tabBAr:

#import <UIKit/UIKit.h>

@interface TabsMainViewController : UIViewController

@property (strong, nonatomic) IBOutlet UITabBar *tabBar;
@property (strong, nonatomic) IBOutlet UIView *directoryContainer;
@property (strong, nonatomic) IBOutlet UIView *groupsContainer;
@end

3. 选择要在 tabBarDelegate 方法中显示的容器:

-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 

            switch (item.tag) 
            case 1:
                _directoryContainer.hidden = NO;
                _groupsContainer.hidden = YES;
             break;

            case 2:
                _directoryContainer.hidden = YES;
                _groupsContainer.hidden = NO;
                break;

            default:
                break;
        

    

希望有帮助!

【讨论】:

我自己曾想过这样做,当没有其他方法可行时,就这样做了。 我也遇到了同样的情况,这就是为什么最好使用 TabBarController。不过,我不能,因为我需要将 taBBar 放在屏幕顶部(而不是底部默认位置)。然后,不得不使用容器。 我有 5 个选项卡,因此添加了 5 个容器和 5 个视图控制器。但发生的情况是,当我的主视图控制器(有容器)被加载时,所有子 VC 都被加载,并且它们的 viewDidLoad 方法被调用。但是当我切换到选项卡时,我想执行一些操作。怎么办? 有没有办法一次只加载一个VC到内存,只有在选择选项卡时才替换它?通过上述方法,所有 5 个 VC 一次加载到内存中。

以上是关于没有 TabBarController 的标签栏 - 为情节提要中的标签栏项目添加视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何在运行时在 TabBarcontroller 中排列标签栏项目?

iPhone在标签栏应用程序模板上的TabBarController之前创建视图

将 TabBArController 添加到 UIView

标签栏控制器未显示所有标签

在 iPhone 应用程序中注销时刷新 tabbarcontroller 视图

如何隐藏 Tabbarcontroller 的第一个视图控制器并直接转到下一个控制器但应在底部显示标签栏项目