【发布时间】:2015-07-10 13:50:14
【问题描述】:
我知道如何使用 prepareForSegue 函数中的 segues 传递数据,但我有一个 TableViewCell,其中有两个可能的 segues 到两个不同的 ViewControllers(现在就说 A、B )。
建议 here 最好将 segues 连接到 View 控制器而不是 tableCell 本身,这实际上工作得很好。但是我想在单击单元格时将信息传递给第二个视图控制器,那么如何访问我连接到源视图控制器的 segue。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showQuestionnaire"{
if let indexPath = self.tableView.indexPathForSelectedRow() {
let controller = (segue.destinationViewController as! UINavigationController).topViewController as! QuestionnaireController
let patientQuestionnaire = patientQuestionnaires[indexPath.row] as! PatientQuestionnaire
controller.selectedQuestionnaire = patientQuestionnaire
self.performSegueWithIdentifier("showQuestionnaire", sender: self)
}
}
}
再次重申:这个问题与通过 prepareForSegue
传递信息无关【问题讨论】:
-
我没有得到问题,但是如果问题是如何将数据发送到 prepareForSegue,请使用 performSegueWithIdentifier 的 sender 字段
-
if ([segue.destinationViewController isKindOfClass:[A_VC class]]) {...} else {...}
-
传递
prepareForSegue中的信息是正确的做法。不过,您绝对不应该在prepareForSegue内调用performSegueWithIdentifier。 -
看起来您已经使用
let controller = segue.destination as...行将信息传递给下一个视图控制器。您具体要做什么而不是在该功能中完成?如其他地方所述,请勿在prepareForSegue内调用performSegueWithIdentifier。 -
伙计们,我正在尝试设置 控制器。 selectedQuestionnaire 在执行从 didSelectRowAtIndexPath 的转场时,但最后,它对我的目标控制器执行转场,但它没有在其中设置 selectedQuestionnaire 值,我认为这是因为我无法访问连接到源视图控制器的 segue 以在 prepareforSegue 函数中创建 DestinationViewController JUST LIKE。我希望这次我清楚了。
标签: ios uitableview swift segue