移动到另一个视图时标签栏控制器消失(iOS SDK,使用故事板)

时间:2012-07-03 12:46:29

标签: objective-c ios uitabbarcontroller storyboard uitabbar

我正在使用故事板构建iPhone应用程序,我的标签栏控制器有问题。在其中一个从标签栏控制器(view1)链接的视图中,有一个按钮指向另一个视图(view2)。在View2上,有一个按钮可以返回View1。很直接。但是当我从view1转到view2时,标签栏消失了,更糟糕的是,当我回到View1时,标签栏仍然消失了...... 我该如何解决这个问题? (我还没有在应用程序中放置任何代码,只有故事板和苹果提供AppDelegate类(我想也是一个主文件,但我不打算接触它)。

任何回复都非常感谢!

2 个答案:

答案 0 :(得分:32)

如果您从一个标签栏视图的视图中执行模态segue,它将摆脱您正在呈现的模态视图的标签栏。

其次,当您进行segue时,您正在创建视图控制器的新实例。所以我猜你是从view1到view2并且丢失了标签栏,然后你又回到了view1。此时,您已创建了view1,view2和没有标签栏的view1的第二个副本。

我建议两件事之一。

1。)如果你想在从view1转到view2时将标签保持在底部,然后点击view1,在屏幕顶部选择Editor / Embed In / Navigation Controller。这会将您的view1嵌入导航控制器中。然后,如果您将segue从Modal更改为Push,它将使标签栏保持在底部。顶部的导航栏还可以轻松地从视图2返回到视图1以正确的方式(通过弹出视图)而不是创建新的segue。如果您不喜欢导航栏,则可以在检查器中将“顶栏”属性更改为“无”。然后,您需要在view2中创建一些其他方法以返回view1。 (通过弹出控制器,而不是通过分离)

2)如果您不想设置导航控制器,那么将标签栏内容保留在view2控制器的底部会有一点点困难。事实上,我不确定你是否可以使用模态segue完成它,你可能不得不写一些类型的自定义segue。无论哪种方式,如果你想转换回view1并转到正确的控制器(不是没有选项卡的新版本),那么你需要将一个动作附加到你用来segue的任何按钮并使用下面的代码(我也附上)导航控制器推送segue的代码,以防您创建导航控制器并摆脱导航栏。)

对于模态争论:

[self dismissModalViewControllerAnimated:YES];

对于Push segue:

[self.navigationController popViewControllerAnimated:YES];

您最好的选择是使用导航控制器方法,因为您可以保留标签。然后你可以使用导航栏返回(简单的方法,不需要代码),或者你可以摆脱它并使用一个按钮和上面的代码。

祝你好运!

答案 1 :(得分:2)

我遇到了同样的问题,我知道这是一个老问题,但在iOS 6中已弃用[self dismissModalViewControllerAnimated:YES];

我使用的是:

[self dismissViewControllerAnimated:YES completion:nil];