适当的segue流

时间:2015-08-14 19:09:24

标签: ios xcode swift segue uistoryboardsegue

我正在寻找执行以下操作的最佳实践方法:

我在NavigationController中嵌入了两个TabBarController视图,并且我不想将其作为选项卡包含但嵌入在NavigationController中:

  1. FeedView(TableViewController)
  2. VenueView(CollectionViewController)

  3. SelectView(ViewController)

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

    override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
    
    let selectVC: SelectViewController! = self.storyboard?.instantiateViewControllerWithIdentifier("selectVC") as! SelectViewController
    
    selectVC.currentVenue = venueItems[indexPath.row]    
        presentViewController(selectVC, animated: true, completion: nil)
    
    }
    

    此segue有效,但SelectView(3)顶部没有导航栏,尽管它嵌入在单独的NavigationController中。如果我将它连接到IB中的其他NavController,它将采用/成为BarTabController中的第三个选项卡。我不想要那个。

    如何连接它以便有一个NavBar(后退按钮将返回到任一视图)但没有Tab?

    此外,SelectView(3)上还有一个按钮。当点击此按钮时,我希望它能够转换为FeedView(1) - 同时保留一些数据,即“推入Feed”。我应该使用什么样的segue?我尝试了很多组合并遇到了一些奇怪的错误,我发现View管理非常困惑。

    下面的故事板图片供参考 视图按从上到下的顺序排列(1-3):

1 个答案:

答案 0 :(得分:1)

为了做到这一点,您需要解决问题,您需要像现在一样展示包含SelectView但不包含SelectView的导航控制器。

您应该将故事板标识符设置为第3个导航控制器并应用此更改:

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

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