Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 弹出视图控制器后出现的选项卡栏_Ios_Objective C_Xcode4.5 - Fatal编程技术网

Ios 弹出视图控制器后出现的选项卡栏

Ios 弹出视图控制器后出现的选项卡栏,ios,objective-c,xcode4.5,Ios,Objective C,Xcode4.5,我正在开发一个iOS应用程序,在这个应用程序中,我使用了一个选项卡栏控制器。 并且从选项卡栏控制器中导航到另一个视图控制器。 在按下视图控制器之前,我将设置该控制器的属性 viewController.hidesBottomBarWhenPushed = YES; 我正在导航到另一个视图控制器,它的底部有选项卡栏 问题是,当我将视图控制器弹出回视图控制器时,选项卡栏也会出现在该视图中。 弹出视图控制器时是否有方法隐藏选项卡栏 如果有人能帮我解决这件事就太好了 提前感谢。在这种情况下,vieww

我正在开发一个iOS应用程序,在这个应用程序中,我使用了一个选项卡栏控制器。 并且从选项卡栏控制器中导航到另一个视图控制器。 在按下视图控制器之前,我将设置该控制器的属性

viewController.hidesBottomBarWhenPushed = YES;
我正在导航到另一个视图控制器,它的底部有选项卡栏

问题是,当我将视图控制器弹出回视图控制器时,选项卡栏也会出现在该视图中。 弹出视图控制器时是否有方法隐藏选项卡栏

如果有人能帮我解决这件事就太好了


提前感谢。

在这种情况下,viewwillbeen方法将非常有用。在firstviewcontroller中输入以下代码

-(void)viewWillAppear:(BOOL)animated
{
   self.tabBarController.tabBar.hidden = YES;
}

因此,当secondviewcontroller弹出时,它将调用此方法,并且您的底部栏将被隐藏。

单击“上一步”按钮时放置此按钮。

[self.tabBarController.tabBar setHidden:YES];

[UIView animateWithDuration:0.5
                     animations:^{
                         self.tabBarController.tabBar.frame = CGRectMake(self.tabBarController.tabBar.frame.origin.x, self.tabBarController.tabBar.frame.origin.y+self.tabBarController.tabBar.frame.size.height, self.tabBarController.tabBar.frame.size.width, self.tabBarController.tabBar.frame.size.height);
                 }
我有另一个答案…

将这两种方法放置在所有ViewController中,并根据您的要求管理
BOOL
变量,该变量为
self。将
推到
YES
NO
时隐藏底部条形图

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    self.hidesBottomBarWhenPushed = YES;
}
- (void)viewDidDisappear:(BOOL)animated
{   
    self.hidesBottomBarWhenPushed = NO;
}

根据应用程序的设计,您可以将中心对象设置为导航控制器的代理。和隐藏/显示选项卡栏。这个问题也提供了一个解决方案,但我不喜欢。顺便说一下,当用户浏览到第二层或更深层时,再次显示底部栏并不常见。

您可以在选项卡栏控制器上显示第二个视图控制器。如果希望第二个视图控制器具有导航栏,可以将其放入新的导航控制器中


如果这种方法不能解决您的问题,您可以构建一个自定义选项卡栏控制器,以便它可以位于导航控制器内。可以将第二个视图控制器推送到该导航控制器。要创建自定义选项卡栏控制器,可以参考。我认为它在iOS 5及更高版本上运行良好。

我尝试过这个,但它不起作用,因为此时视图控制器实际上没有被推。该场景是当用户向后导航时。此方法在用户向后导航时调用,而不是在用户推送另一个视图时调用,因此您必须声明
viewController.hidesBottomBarWhenPushed=YES2次。第一个在
viewDidLoad
方法中,第二个在
viewwillbeen
mthod中。我尝试在view-did-load中设置属性。。但tabbar仍然存在。哦,我犯了一个愚蠢的错误,我复制了你的tabbar隐藏代码,但它只在secondview推送时才使用,这就是它不起作用的原因。现在我已经编辑了我的代码。因此,现在在pushed=YES时放置
viewController.hidesbottombar
viewDidLoad
方法中,并且
self.tabBarController.tabBar.hidden=YES将出现在
视图中
方法它将解决您的问题。不,这并没有解决问题。底部仍然有一个空白。我也试过了。问题是你可以隐藏标签栏,它会在底部留下一个空白。当我尝试将视图框设置为全屏时,它没有工作。正如您所说,首先firstview有底部栏,然后按下它将隐藏,对吗?当从按下的viewController弹出时,它应该隐藏。。。这是您的要求还是我缺少任何东西FirstView(有底部栏)->secondview(隐藏底部栏)->thirdview(有底部栏)然后我弹出第三个视图并导航回第二个视图底部栏在那里。。我需要把它处理掉。如果我按照你的建议做,我会在底部留下一个空白。一旦看到我编辑的答案,伙计…把它放在第三个视图按钮后退动作中。。可以在第二个视图按钮后退操作中,放置这个self.tabBarController.tabBar.frame=CGRectMake(self.tabBarController.tabBar.frame.origin.x,self.tabBarController.tabBar.origin.y,self.tabBarController.tabBar.size.width,self.tabBarController.frame.size.height);这无法正确设置框架。难道没有比这更简单的方法吗?向代码展示你是如何放置tabbar的?