我有一个包含几个不同原型单元格的表视图。我希望将一个原型单元格连接到一个控制器,其余的不应该是可点击的,即没有seg。
现在,我有一个按钮成功链接到控制器但是当我点击tableview原型单元格时,它被一个不同的控制器(在故事板中)没有任何反应。我也没有收到任何错误。
解决这个问题的最佳方法是什么?我可以在故事板中制作两个不同的段吗?或者我是否需要在tableview方法中实现某些内容在索引路径中选择行,以某种方式获取与单击行相关联的类并以编程方式将其划分到不同的屏幕?就像是: func tableView(tableView:UITableView,didSelectRowAtIndexPath indexPath:NSIndexPath){ 的println("此处&#34) //self.performSegueWithIdentifier("profileSeg" ;, sender:self) }
当我选择一个单元格时,我没有得到println,是的,我已经在viewdidload中分配了委托。
修改
我刚才意识到我在解释这个问题时犯了一个错误。我实际上在底部有一个链接到一个视图控制器的视图。它不是一个tableview行...这是有效的seg。但是我将ctrl从一种类型的单元格拖动到另一种类型的单元格,并且该seg不起作用。还有3种其他类型的细胞,它们都没有附着。这与这个问题有关吗?
答案 0 :(得分:0)
有两种方法可以做你想做的事:
首先,如果您只想将一台TVCell与一台ViewController连接起来,您可以按照自己的方式进行操作:将每台TVCell与您想要的ViewController连接起来。为此,按住ctrl并从原型拖放到ViewController。因此,每个TVCellPrototype都可以有一个segue,如果你点击单元格,它将自动执行segue。 这也是您的代码不打印“profile seg”的原因。 在这种情况下,您不需要为segue指定标识符。
如果您需要从一个TVCell到两个或更多ViewControllers的MULTIPLE segue,第二种方式会更好。为此,您可以将TVCells的ViewController与您想要的ViewControllers链接起来。这样你可以设置任意数量的segue,但你必须给它们一个标识符,因为你必须在tableView(... didSelectRowAtIndexPath)函数中调用它们。 (单击界面构建器中的segue为其指定标识符)。这看起来像是:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.performSegueWithIdentifier("ProfileSeg", sender: AnyObject?())
}
现在让我们谈谈为什么你没有得到println(“这里”): 根据功能必须有一个错误,因为它前面没有“覆盖”。通常,编译器不会构建您的应用程序,因为它丢失了。我没有所有的代码所以我不能确切地说出你的错误。
答案 1 :(得分:0)
不要直接从单元格切换到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)
}
}