从一个视图控制器转到不同的控制器

Segue to different controllers from one view controller

我有一个 table 视图,其中包含几个不同的原型单元格。我希望将一个原型单元连接到一个控制器,其余部分不应可点击,即没有分段。

现在,我有一个按钮成功链接到控制器,但是当我点击 tableview 原型单元格时,它被连接到另一个控制器(在情节提要中)没有任何反应。我也没有收到任何错误。

解决这个问题的最佳方法是什么?我可以在故事板中制作两个不同的 segue 吗?或者我是否需要在索引路径的 table 视图方法中实现 select 行,以某种方式获取与单击的行关联的 class 并以编程方式转到不同的屏幕?就像是: func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { println("here") //self.performSegueWithIdentifier("profileSeg", 发件人: self) }

当我 select 一个单元格时,我没有在这里得到 println 是的,我已经在 viewdidload 中分配了委托。

编辑

我刚刚意识到我在解释问题时犯了一个错误。我实际上在底部有一个链接到一个视图控制器的视图。它不是 table 查看行...这是有效的段。但是我已经将 ctrl 从一种类型的单元格拖到第二个 controllleR 并且该 seg 不工作。还有 3 种其他类型的细胞 none,其中附加了段。这与问题有关吗?

有两种方法可以做你想做的事:

首先,如果你只想 link 一个 TVCell 和一个 ViewController 你可以做你开始做的事情:Link 每个 TVCell 和你想要的 ViewController从那里去。为此,按住 ctrl 并从原型拖放到 ViewController。所以每个 TVCellPrototype 都可以有一个 segue,如果你点击单元格,它会自动执行 segue。 这也是您的代码不打印 "profile seg" 的原因。 在这种情况下,您不需要为 segue 提供标识符。

如果您需要从一个 TVCell 到 2 个或更多 ViewController 进行多次转场,则第二种方法更好。为此,您 link TVCells 的 ViewController 和您想去的 ViewControllers。这样你就可以根据需要设置任意数量的 segue,但你必须给它们一个标识符,因为你必须在 tableView(... didSelectRowAtIndexPath) 函数中调用它们。 (单击界面构建器中的 segue 为其指定一个标识符)。这看起来像:

 override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    self.performSegueWithIdentifier("ProfileSeg", sender: AnyObject?())        
}

现在让我们谈谈为什么你没有得到 println("here"): 根据函数肯定有错误,因为它前面没有"override"。通常,编译器不会构建您的应用程序,因为它丢失了。我没有所有的代码,所以我不能确切地说出你的错误是什么。

不要直接从单元格转到 'ViewController',您必须将单元格 'ViewController' 转到另一个 'ViewController'。您可以从 'ViewController'.

开始多次搜索

请添加此代码

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    println("You selected cell #\(indexPath.row)!")
    if indexPath.row == 0{
        performSegueWithIdentifier("profileSeg", sender: self)
    }else{
        performSegueWithIdentifier("anySeg", sender: self)
    }
}

如果didSelectRowAtIndexPath没有生效,可能是你的UITableViewDelegate没有设置,或者你的UITableView的Selection可能已经关闭,需要打开,请查看图片了解具体方法。

干杯。