2 ViewControllers以模态方式呈现UITabBarController

时间:2014-05-10 02:39:00

标签: ios objective-c instagram presentmodalviewcontroller tabbarcontroller

我试图在iOS应用程序中创建一个类似于Instagram的相机" TabBarItem"功能。按下相机按钮时,tabBarController自行解除(模态)并在后台显示摄像机视图。当我们决定关闭相机视图时,tabBarController以模态呈现,一切都很好!我的问题与此实施类似。

我有一个自定义的UITabBar,其中2" TabBarItems"应该执行上述操作。所以当一个" TabBarItem"按下,tabBarController应该解除(模态),并且当tabBarController被解雇时,视图应该出现在后台。同样的事情应该发生在另一个" TabBarItem"但是出现了不同的观点。我已经想到了几种不同的做法,但它们中没有一种看起来真的很优雅"而且我还没有在SO上找到类似的问题。所以这里。

为了便于描述:

TabBarItem1(TB1)被按下 - > TabBarController解散(模态) - >显示ViewController1(VC1)(因为TabBarController被解除)

TabBarItem2(TB2)被按下 - > TabBarController解散(模态) - >显示ViewController2(VC2)(因为TabBarController被解除)

第一种方法: 将VC1设置为initialVC - >以模态呈现VC2(动画:否) - >它以模态方式呈现TabBarController 然后,什么时候...... TB1按下 - > Dismiss TabBarController(动画:是) - >解散VC2(动画:否) 问题:在TabBarController被解除之前,VC2将可见。所以这是不行的。

第二种方法: 创建一个ViewController(设置为initialVC),它包含2个基于所选TabBarItem隐藏/显示的UIViews(代表VC1.view和VC2.view)。这个SEEMS就像是最合理的解决方案。但我不认为这很优雅。我想知道是否有人有任何建议。希望它不像我看起来那样令人困惑。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果您执行方法#1并解除VC2(首先不自行解除标签栏),是否会在堆栈中解除两个正确的外观?我还没有跟上模态堆栈文档,但我认为这可能有用。

当你需要放回标签栏时,你可能需要做一些清理工作(虽然我认为它会在你重新呈现vc2时返回。)