在Swift中的嵌入式tableView中准备segue

时间:2014-09-30 06:10:35

标签: uitableview swift uistoryboardsegue

我有一个UITableViewController,静态单元通过故事板嵌入普通的ViewController中。这是按预期工作的。但是,当我想要在嵌入式tableview上的单元格被单击时准备segue时,应用程序崩溃而没有真正的错误。

我有一个嵌入式UITableViewController,TableViewVC的类,以及一个嵌入它的类RootVC。我想实现这个方法:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?);

我在TableViewVC中的特定静态单元格中创建了故事板中的segue。当我在TableViewVC中实现此方法时,它永远不会被调用。它确实在RootVC中调用但是当我尝试访问segue.identifier属性时崩溃。当我在这里调试应用程序时,我可以看到segue的类型是:

UIStoryboardEmbedSegue

有没有人知道我如何正确准备这个segue并访问标识符属性以了解单击了哪个单元格?

修改:错误的屏幕截图:http://cl.ly/image/2z031b2B3i0o

2 个答案:

答案 0 :(得分:2)

UIStoryboardEmbedSegue用于ViewControllers中的嵌入关系。它正在设置RootVC和TableVC之间的父子关系。它会崩溃,因为你没有机会获得这个特定segue的标识符。如果您对嵌入关系不感兴趣,则不应在RootVC中覆盖此函数。

看起来您没有正确设置细胞中的segue。如果您发布故事板的图像,我们可以看看。

另一种方法是通过控制从故事板中VC顶部的黄色VC图标拖动到所需目的地,从TableVC(而不是单元格)设置segue。然后在didSelectRow中以编程方式执行segue。

答案 1 :(得分:1)

我有类似的问题。如果标识符中的标识符为空,则无法访问segue.identifier