【发布时间】:2018-01-01 08:10:15
【问题描述】:
我创建了一个 UIViewController,里面有一个 UITabbar。
我没有使用 UITabbarController,因为我希望 UITabbar 在屏幕顶部。
单击 tab1 时,我想显示控制器 1,单击 tab2 时,我想显示控制器 2。我不想隐藏选项卡栏。我想在标签栏下方显示控制器。
@interface MTLeaderFactoViewController () <UITabBarDelegate>
@property (weak, nonatomic) IBOutlet UITabBar *tabBar;
@end
@implementation MTLeaderFactoViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
}
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
if (item.tag == 0) {
NSLog(@"item tag 0");
} else {
NSLog(@"item tag 1");
}
}
@end
我的问题:
1) didSelectItem 方法即使在使用 UITabbarDelegate 后也不会触发
2) 单击按钮时显示控制器最优雅的方式是什么?我不想使用 segue,因为所有控制器都在不同的故事板中。 目前,我打算这样做
Controller1 *fp = [Controller1 controllerStoryboard:STORYBOARD_COURSE];
[self addChildViewController:fp];
[self.view addSubview:fp.view];
[fp didMoveToParentViewController:self];
编辑 1:
Controller1 *fp = [Controller1 controllerStoryboard:STORYBOARD_COURSE];
[self addChildViewController:fp];
[self.view addSubview:fp.view];
[fp didMoveToParentViewController:self];
试过了,但它隐藏了标签栏。我想利用标签栏下方的空间来显示控制器
【问题讨论】:
-
您是否将
UITabbarDelegate设置为MTLeaderFactoViewController?仅仅实现委托方法不会调用委托方法。 -
将 TabBar 委托连接到 xib/StoryBoard 中的 ViewController
-
天哪,我的错。感谢您指出这一点。
-
而我想显示控制器的方式可以吗?
-
添加子视图将从视图中删除您的标签栏
标签: ios objective-c uitabbar uitabbaritem