没有 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之前创建视图