Ios 从一个视图控制器切换到不同的控制器

Ios 从一个视图控制器切换到不同的控制器,ios,swift,uitableview,segue,uistoryboardsegue,Ios,Swift,Uitableview,Segue,Uistoryboardsegue,我有一个带有几个不同原型单元的表视图。我想让一个原型单元与一个控制器分离,其余单元不应可点击,即无分离 现在,我有一个按钮成功链接到一个控制器,但当我点击tableview原型单元,它被分割到另一个控制器(在故事板中)时,什么都没有发生。我也没有任何错误 最好的解决办法是什么?我可以在故事板中制作两个不同的片段吗?或者我需要在tableview方法中实现一些东西吗?在索引路径中选择行,以某种方式获取与单击的行关联的类,并以编程方式切换到不同的屏幕?比如: func tableView(table

我有一个带有几个不同原型单元的表视图。我想让一个原型单元与一个控制器分离,其余单元不应可点击,即无分离

现在,我有一个按钮成功链接到一个控制器,但当我点击tableview原型单元,它被分割到另一个控制器(在故事板中)时,什么都没有发生。我也没有任何错误

最好的解决办法是什么?我可以在故事板中制作两个不同的片段吗?或者我需要在tableview方法中实现一些东西吗?在索引路径中选择行,以某种方式获取与单击的行关联的类,并以编程方式切换到不同的屏幕?比如: func tableView(tableView:UITableView,didSelectRowAtIndexPath:nsindepath){ println(“此处”) //self.performsguewithidentifier(“profileSeg”,发送方:self) }

当我选择一个单元格并且是的,我已经在viewdidload中分配了代理时,我在这里没有得到println

编辑


我刚刚意识到我在解释这个问题时犯了一个错误。实际上,我在底部有一个视图,它链接到一个视图控制器。它不是tableview行。。。这就是有效的seg。但我已经将ctrl从一种类型的单元格拖到另一个控制器,seg不工作。还有3种其他类型的细胞,它们都没有连接SEG。这与问题有关吗?

有两种方法可以满足您的需求:

首先,如果您只想将一个TVCell链接到一个ViewController,那么您可以执行您开始执行的操作:将每个TVCell链接到您想从那里开始的ViewController。为此,按住ctrl键并从原型拖放到ViewController。因此,每个TVCellPrototype都可以有一个segue,如果你点击该单元,它将自动执行segue。 这也是代码不打印“profile seg”的原因。 在这种情况下,您不需要给segue一个标识符

如果需要从一个TVCell到两个或多个ViewController的多个分段,则第二种方法更好。为此,请将TVCell的ViewController与要转到的ViewController链接。这样,您可以根据需要设置任意多个Segue,但必须给它们一个标识符,因为您必须在tableView(…DidSelectRowatineXpath)函数中调用它们。(单击interface builder中的segue,为其指定一个标识符)。这将看起来像:

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

    self.performSegueWithIdentifier("ProfileSeg", sender: AnyObject?())        
}
现在,让我们来谈谈为什么你不能得到println(“这里”):
根据函数,必须有一个错误,因为前面没有“覆盖”。一般来说,编译器不会生成你的应用程序,因为它丢失了。我没有所有的代码,所以我不能确切地说出您的错误。

不要直接从单元格到“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)
    }
}

如果
didselectRowatingIndexPath
不工作,可能是由于未设置
UITableViewDelegate
造成的,也可能是由于UITableView的选择已关闭,需要打开,请参见图片以了解如何操作


干杯。

这是因为,您已将segue从故事板中的单元格选择连接到另一个ViewController,将其从单元格选择中删除,然后从ViewController重新添加到ViewController,虽然您现在需要使用其标识符调用特定的segue。@iPhonec当您说从viewController重新添加到viewController时,您的确切意思是什么。我按ctrl键拖动到第二个和第三个控制器上的黄色图标,但从第一个控制器上的何处拖动?(如果不是来自单元格选择)@iphone i已从单元格选择中删除分段,并将viewControllerA连接到viewControllerB和viewControllerC。现在没有正在执行的序列是的,现在您需要调用
[self-performsguewithidentifier:@“IDENTIFIER”发送方:self]对于您需要的特定segue调用..在任何情况下都应该调用didSelect,如果没有调用它,则可能未将其委托设置为tableview,或者tableview的选择已从属性设置中关闭。我的方法如下所示:func tableview(tableview:UITableView,didSelectRowAtIndexPath indexPath:NSIndexPath){println(“此处”)//self.performsguewithidentifier(“profileSeg”,发送方:self)}您所描述的两种方式,我都尝试过,但都不适用于我。我只从cellprortotypeB链接到viewcontrollerB,从cellprotypeCI链接到viewControllerC。我刚刚意识到我在解释问题时犯了一个错误。实际上,我在底部有一个视图链接到一个视图控制器。它不是tableview r哦…这就是seg。但是我已经将ctrl从一种类型的单元格拖到另一种类型的控件,并且seg不起作用。还有3种其他类型的单元格没有附加seg。这与问题有关吗?你读过我的评论吗?我试过了。问题是我没有进入这个函数