使用Segues将UINavigationViewController切换到UITabBarController

时间:2014-01-21 17:14:11

标签: ios iphone objective-c xcode uitabbarcontroller

我正在更改我的应用以使用UITabBarController而不是UINavigationViewController。我相应地更换了控制器,app成功启动了标签。在代码的后面,我遇到了使用像

这样的行的segues的一些困难
[self performSegueWithIdentifier:@"ImageViewController" sender:self];

无法生成错误

推送segues只能在源控制器由UINavigationController实例管理时使用

当我将UINavigationController嵌入到初始FirstViewController时,上面的行正常工作。我需要该行在视图之间切换并将一些数据传递给另一个视图控制器。

问题是使用segue标识符转到SecondViewController会隐藏TabBar导航(除非我再次在SecondViewController中包裹UINavigationController,依此类推)。那不是解决方案。

问题:如何使用UITabBarController并在保持标签导航可见的同时仍然利用segue?

enter image description here

2 个答案:

答案 0 :(得分:2)

  

“Push segues只能在源控制器由UINavigationController实例管理时使用”

听起来就像你在导航控制器外的某处使用push segue一样。尝试在界面构建器中选择导航控制器中的所有“segue bubbles”:

Segue Bubble

并在右侧窗格中检查segue的样式:

Segue Settings

如果样式设置为值push,如上所示,请将其更改为modalcustom

Change style to Modal

答案 1 :(得分:1)

你的联系有问题。如果您正在使用界面构建器(故事板),那么您的连接应如下所示。见图

请注意,您缺少UINavigation标题标题。此外,每个视图控制器下方的灰色区域表示为UITabBarController

的图像保留了空间

另一个问题是你的UIToolBar。看起来它坐在UITabBar将显示的顶部。由于您已经拥有UINavigationController和UITabBarController,因此苹果可能/可能不会拒绝您的应用。如果您在该页面上需要更多按钮/选项,请改为使用UIButtons。

enter image description here