编辑基于提供的答案:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
selectedName = quizNames[indexPath.row]
performSegueWithIdentifier("saveSegue", sender: self)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "saveSegue" {
let inputController = segue.destinationViewController as? QAInputViewController
inputController?.quizName = selectedName
}
}
我在这里做了一些研究,试图弄清楚如何使用prepareForSegue将所选的Core Data对象从UITableView单元传递给第二个View Controller,但我发现并试图实现的对我来说并不合适.似乎有些代码可能已经过时了.这是我想要做的:
>我使用Name类型的数组填充UITableView,这是我的NSManagedObject.当我选择一个特定名称时,它会将我转到输入屏幕,在那里将提交问题和答案.我想确保提交的问题和答案保持分配给先前选择的名称.我不知道如何在prepareForSegue中设置它.我确实用关系建立了我的数据模型,所以如果我正确地做了它,一旦我理解了如何实现它就应该工作.有什么方法可以检查当前选择的名称,以便我知道输入的任何问题和答案将保存到该名称?
>相对于我的上述问题,我希望第二个视图控制器的标题显示以前选择的名称的名称.
基本上我只是想在Swift 2中实现这个实现的指导.非常感谢你的帮助.
编辑:Passing Core Data objects from UITableViewCell to another View Controller
以上链接是我尝试实施的解决方案,对我来说不起作用.特别:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showTaskDetail" {
let detailVC: TaskDetailViewController = segue.destinationViewController as! TaskDetailViewController
let indexPath = self.tableView.indexPathForSelectedRow()
let thisTask = fetchedResultsController.objectAtIndexPath(indexPath!) as! TaskModel
detailVC.detailTaskModel = thisTask
detailVC.delegate = self
}
最佳答案 我是这样做的:
在我的班级顶部,我将有一个存储所选项目的var:
var selectedTask: Task?
然后在我的tableViews didSelectRow方法中:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
selectedTask = tasks[indexPath.row]
performSegueWithIdentifier("showTaskDetail", sender: self)
}
最后:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showTaskDetail" {
let detailVC: TaskDetailViewController = segue.destinationViewController as! TaskDetailViewController
detailVC.detailTaskModel = selectedTask
detailVC.delegate = self
}
}
但是,我更倾向于传递某种ID /名称并使用新的moc执行另一次获取而不是传递核心数据对象.
通过这种方式,您可以减少线程问题,如果您需要深入链接到应用程序(例如通知或其他内容),这将使事情变得更加容易.
Mocs便宜,使用一次,扔掉它们.