从 tableview 转到导航控制器前面的视图

Posted

技术标签:

【中文标题】从 tableview 转到导航控制器前面的视图【英文标题】:Segue from tableview to view preceded by navigation controller 【发布时间】:2016-02-05 19:29:53 【问题描述】:

在我的项目中,我在 TableView 中有一个带有 3 个选项的幻灯片菜单。根据所选的选项,我想选择 ViewController1、ViewController2 或 ViewController3,所有这些选项都以导航控制器开头。

目前我在 Storyboard 中使用从 Prototype Cell 到 ViewController1 的 segue,以“segueid”作为标识符,因此所有选项都转到 ViewController1。

这是 file.swift 中准备转场的代码:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
    if segue.identifier == "segueid"
        var DestViewController = segue.destinationViewController as! UINavigationController

当 XCode 只允许我从情节提要中的单元格设置一个 segue 时,问题就出现了,因此我无法指向 VC2 和 VC3。

是否有任何方法可以根据从 tableview 中选择的行来选择导航控制器前面的不同视图?

【问题讨论】:

【参考方案1】:

您应该在视图控制器之间创建转场。

不要创建从单元到视图控制器的 segue。

然后,在您选择一个单元格后,您应该决定要调用哪个 segue。

【讨论】:

效果很好!现在我将下面粘贴的代码添加到 didSelectRowAtIndexPath 以选择正确的 segue。谢谢! performSegueWithIdentifier("segue_" + listOfOptions[indexPath.row].optionName, sender: nil)【参考方案2】:

我想它会帮助你。从此链接下载源代码。它的 AKSwiftSlideMenu for ios AKSwiftSlideMenu

它在 BaseViewController 中有一个方法,您可以在其中设置从情节提要实例化的选定视图控制器作为 self.navigationController 的根视图控制器。

func slideMenuItemSelectedAtIndex(index: Int32) 
        let topViewController : UIViewController = self.navigationController!.topViewController!
        print("View Controller is : \(topViewController) \n", terminator: "")
        switch(index)
        case 0:
            print("Home\n", terminator: "")
            break
        case 1:
            print("Play\n", terminator: "")
            break
        case 2:
            print("Camera\n", terminator: "")
            break
        default:
            print("default\n", terminator: "")
        
    

【讨论】:

以上是关于从 tableview 转到导航控制器前面的视图的主要内容,如果未能解决你的问题,请参考以下文章

tableview 没有用导航栏填满情节提要中的整个屏幕

使用子视图中的数据重新加载 tableview

导航控制器未显示在 TableView 中

导航控制器中的静态 barButtonItems?

使用 TableView 向视图控制器添加导航

在不使用导航控制器的情况下转到第二个视图时如何显示动画?