在Modal Segue iOS之后,同一个TabBarController的多个实例

时间:2012-10-26 20:07:23

标签: iphone ios ipad memory uitabbarcontroller

我有一个带有一个主TabBarController的应用程序,其中包含两个控制两个不同视图的选项卡,A& B.视图A是scrollView,视图B是TableView。当我最初加载应用程序时,视图A中的滚动视图为空。

为了将页面添加到我的scrollView,我按如下方式进行了设置:我去查看B并对嵌入了navigationBar的视图执行一个模态segue。 navigationBar只有一个按钮“取消”,我用它来关闭视图。否则,用户必须单击图像并执行另一个模态segue到不同的视图。这个视图没有导航栏,并且有一个按钮'DONE',我用它来执行一个模态segue回到最初的tabBarController。

问题在于:按“完成”后,页面被添加到scrollView,没有任何错误。但是,我相信我现在有两个相同的tabBarController实例在内存中浮动。当我尝试使用不同的按钮抓取scrollView中包含的视图时,它告诉我它现在是空的(即使它在viewDidLoad和viewDidAppear期间已满)。

如何删除初始的tabBarController视图,或者如何切换回我已经分配的tabBarController?任何帮助将非常感谢!谢谢!

1 个答案:

答案 0 :(得分:2)

您不应该将segue做回原始视图控制器。相反,您应该关闭当前视图控制器的动画,并显示原始的tabBarController。

在视图内部,您可以添加:

tabBarController *tabs = (tabBarController*)[[self presentingViewController]presentingViewController];
tabs.selectedViewController = [tabz.viewControllers objectAtIndex:0];

[[[self presentingViewController] presentingViewController] dismissViewControllerAnimated:YES completion:nil];

然后你会看到A出现并仍然使用相同的分配。