我知道如何使用 prepareForSegue函数中的segues传递数据,但是我有一个TableViewCell,从那里有两个可能的segues到两个不同的ViewControllers(现在让我们说A,B)。在这里建议最好将segues连接到View控制器,而不是将tableCell本身连接,事实如此,效果很好。但是我想在单击单元格时将信息传递给第二个View控制器,因此如何访问我连接到SourceViewController的 segue 。
码:
内部prepareForSegue
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* 传递信息 *
您应该使用该didSelectRowAtIndexPath方法来确定是否选择了一个单元格。
didSelectRowAtIndexPath
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { self.performSegueWithIdentifier("showQuestionnaire", sender: indexPath); }
然后用你的prepareForSegue方法
prepareForSegue
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { if (segue.identifier == "showQuestionnaire") { let controller = (segue.destinationViewController as! UINavigationController).topViewController as! QuestionnaireController let row = (sender as! NSIndexPath).row; //we know that sender is an NSIndexPath here. let patientQuestionnaire = patientQuestionnaires[row] as! PatientQuestionnaire controller.selectedQuestionnaire = patientQuestionnaire } }
解释…
performSegueWithIdentifier