9

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

任何回复都非常感谢!

4

2 回答 2

32

如果您从作为选项卡栏视图的视图执行模态转场,它将摆脱您正在呈现的模态视图的选项卡栏。

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

我会建议两件事之一。

1.) 如果您想在从 view1 切换到 view2 时将选项卡保留在底部,请单击 view1,在屏幕顶部选择编辑器/嵌入/导航控制器。这会将您的 view1 嵌入到导航控制器中。然后,如果您将 segue 从 Modal 更改为 Push,它将使您的标签栏保持在底部。顶部的导航栏还可以轻松地以正确的方式(通过弹出视图)从视图 2 返回到视图 1,而不是创建新的转场。如果您不喜欢导航栏,则可以在检查器中将“Top Bar”属性更改为“None”。然后,您将需要在 view2 中创建一些其他方式以返回 view1。(通过弹出控制器,而不是通过SEGUEING)

2)如果您不想设置导航控制器,则将标签栏的内容保持在 view2 控制器的底部会有点困难。实际上,我不确定您是否可以使用模态转场来做到这一点,您可能必须编写某种类型的自定义转场。无论哪种方式,如果您想转换回 view1 并获得正确的控制器(不是没有选项卡的新版本),那么您需要将一个操作附加到您正在使用的任何按钮上,并使用以下代码(我还附加了导航控制器推送序列的代码,以防您创建导航控制器并摆脱导航栏。)

对于模态搜索:

[self dismissModalViewControllerAnimated:YES];

对于 Push segue:

[self.navigationController popViewControllerAnimated:YES];

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

祝你好运!

于 2012-07-03T14:10:12.123 回答
2

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

我用的是:

[self dismissViewControllerAnimated:YES completion:nil];

于 2014-02-24T22:40:55.123 回答