移动到另一个视图时选项卡栏控制器消失(iOS SDK,使用情节提要)



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

任何回复都非常感谢!

如果您从选项卡栏视图的视图执行模式 segue,它将摆脱您正在呈现的模式视图的选项卡栏。

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

我会建议两件事之一。

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

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

对于模态 Segue:

[self dismissModalViewControllerAnimated:YES];

对于推送 segue:

[self.navigationController popViewControllerAnimated:YES];

最好的办法是使用导航控制器方法,因为您可以确保保留选项卡。 然后,您可以使用导航栏返回(简单的方法,无需代码),或者您可以摆脱它并使用按钮和上面的代码。

祝你好运!

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

我使用的是:

[self dismissViewControllerAnimated:YES completion:nil];

最新更新