从模态回到第一个标签栏

Posted

技术标签:

【中文标题】从模态回到第一个标签栏【英文标题】:Segue back from Modal to First Tab Bar 【发布时间】:2015-08-18 00:25:15 【问题描述】:

我有两个 TabBarController 视图嵌入在 NavigationController 中,一个 View 以模态方式呈现,带有自己的 NavigationController:

FeedView (1) (TableViewController -> 包含在 TabBarController 中)

VenueView (2) (CollectionViewController -> 包含在 TabBarController 中)

SelectView (3) (ViewController -> 从 VenueView 模态呈现)

在 VenueView (2) 中,我有以下代码来调出 SelectView (3):

override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) 

    let selectNavigationController = self.storyboard?.instantiateViewControllerWithIdentifier("selectNavController") as! UINavigationController
    let selectVC = selectNavigationController.topViewController as! SelectViewController
    selectVC.currentVenue = venueItems[indexPath.row]

    presentViewController(selectNavigationController, animated: true, completion: nil)

这允许我在没有 tabbarcontroller 的情况下调出 SelectView(3),但仍然有一个导航栏。我在 SelectView(3) 中有一个按钮,我想用它来保存对象的数据并进入 FeedView(1)。

我尝试了很多方法,但最接近成功的方法是继续使用 FeedView(1),但添加了更多视图控制器(由导航栏中的按钮证明)并且不包含在 TabBarController 中。

创建这个segue的正确方法是什么?我知道如何保存数据,但我的问题更多与从模态视图到 BarTab 的第一个选项卡的正确技术有关。

下图供参考:

【问题讨论】:

【参考方案1】:

如果您留在同一个导航堆栈中,您可以使用展开转场。 但是,FeedView 位于不同的导航控制器上。

一种方法是让您的 TabbarController 切换回 FeedbackView(第一个选项卡),使用:

 tabBarController.selectedIndex = 0

【讨论】:

您好,感谢您的回答。你会如何建议实施这个?我知道我必须使用 dismissViewController 例如返回到第二个选项卡,但是我如何使用上面的 sn-p 然后自动转到第一个选项卡而不显示第二个视图? 是的,你关闭了你的视图,你可以使用 self.tabBarController 来访问 Tabbar VC 并直接设置一个选定的索引,或者在 Tabbar VC 类中创建一个函数来执行它(如果你需要类似的行为在其他 VC 中)。

以上是关于从模态回到第一个标签栏的主要内容,如果未能解决你的问题,请参考以下文章

我应该使用 presentViewController 回到第一个视图控制器吗?

如何从 appdelegate 呈现和关闭模态视图?

从模态视图关闭的标签栏项目中删除选择图像

标签栏第二次点击弹出到导航控制器 - 如何停止它

vue左侧菜单栏第一个和最后一个同时打开

C# 模态框传值