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

byt*_*yer 10 objective-c storyboard uitabbarcontroller uitabbar ios

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

任何回复都非常感谢!

Jus*_*son 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];
Run Code Online (Sandbox Code Playgroud)

对于Push segue:

[self.navigationController popViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)

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

祝好运!