如果您从作为选项卡栏视图的视图执行模态转场,它将摆脱您正在呈现的模态视图的选项卡栏。
其次,当你 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];
您最好的选择是使用导航控制器方法,因为您可以确保密切关注。然后,您可以使用导航栏返回(简单的方法,不需要代码),或者您可以摆脱它并使用按钮和上面的代码。
祝你好运!