TabBarController在推送时隐藏底栏时不会隐藏其视图中的子视图

时间:2014-05-04 12:15:58

标签: ios uitabbarcontroller uitabbar

我正在尝试创建一个基于TabBarController的应用程序,该应用程序在tabbar中间有一个自定义按钮,就像Instagram和其他应用程序一样。

我知道它将是一个自定义按钮的原因是,当用户按下按钮时,他/她不应该期望“视图控制器”的segue行为,而是一个呈现的视图控制器。至于我到目前为止的研究,除了切换到标签栏所拥有的另一个视图控制器之外,很难自定义标签栏项以执行任何操作。

假设我对该按钮必须自定义是正确的(如果您知道如何将一个条形按钮项添加到标签栏并且它呈现vc而不是切换到vc,请在您的答案中包含它) ,我在标签栏控制器的视图中添加了一个自定义按钮:

- (void)addPostButton {
button = [UIButton buttonWithType:UIButtonTypeCustom];
button.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleTopMargin;
button.frame = CGRectMake(0.0, 0.0, 55, 55);   
[button setImage:[UIImage imageNamed:@"post.png"] forState:UIControlStateNormal];
[button setBackgroundColor:[UIColor colorWithRed:32.0/255.0 green:35.0/255.0 blue:44.0/255.0 alpha:1]];
[button.layer setCornerRadius:button.frame.size.height / 2];
[button.layer setBorderColor:[UIColor whiteColor].CGColor];
[button.layer setBorderWidth:1.0f];


[button addTarget:self action:@selector(addPost) forControlEvents:UIControlEventTouchUpInside];


CGFloat heightDifference = 60 - self.tabBar.frame.size.height;
if (heightDifference < 0)
    button.center = self.tabBar.center;
else
{
    CGPoint center = self.tabBar.center;
    center.y = center.y - heightDifference/2.0-5;
    button.center = center;
}

   [self.tabBar addSubview:button];

}
- (void)viewDidLoad
{
    [super viewDidLoad];

    [self addPostButton];
}

我的故事板目前构建为: - root - &gt;标签栏控制器 - 查看控制器 - &gt;导航控制器--root - &gt;查看控制器。现在我试图让导航控制器推送视图,并希望隐藏推入视图中的标签栏。我检查了'隐藏推杆底部栏',这工作正常,除了添加的子视图仍在那里。

显然,'hidesBottomBarOnPush'只隐藏tabbarcontroller.tabbar,但不隐藏其他子视图tabbarcontroller.view。

我还尝试将自定义按钮添加到tabbarcontroller.tabbar,但没有显示任何内容。因此,我似乎必须将按钮添加到其视图中,而不是其标签栏。当我弹出刚刚推动的vc时,添加的按钮位于标签栏下方而不是正上方。 tabbarcontroller的视图层次结构有问题。

如果您知道任何向tabbarcontroller.tabbar添加自定义按钮的解决方案,或者以优雅的方式隐藏tabbarcontroller.view的子视图,我将非常感激。

1 个答案:

答案 0 :(得分:0)

这可能正在发生,因为您已将子视图添加到标签栏控制器,而不是标签栏本身。根据您添加按钮的方式,有多种方法可以解决此问题。