从UITableView

时间:2016-01-25 02:00:33

标签: ios swift uitableview core-data segue

根据提供的答案编辑:

    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,但是我发现并尝试实现的方法并没有解决对我来说,似乎有些代码可能已经过时了。这是我想要做的:

  1. 我使用Name类型的数组填充UITableView,这是我的NSManagedObject。当我选择一个特定名称时,它会将我转到输入屏幕,在那里将提交问题和答案。我想确保提交的问题和答案保持分配给先前选择的名称。我不知道如何在prepareForSegue中设置它。我确实用关系建立了我的数据模型,所以如果我正确地做了它,一旦我理解了如何实现它就应该工作。有什么方法可以检查当前选择的名称,以便我知道输入的任何问题和答案都会保存到该名称吗?

  2. 相对于我的上述问题,我希望第二个View Controller的标题显示以前选择的名称的名称。

  3. 基本上我只是在寻找有关在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
    
        }
    

1 个答案:

答案 0 :(得分:2)

我就是这样做的:

在我班级的顶部,我会有一个存储所选项目的var:

var mySecondVar = myFirstVar.ToString()
mySecondVar = mySecondVar.replace("a","u");

然后在我的tableViews didSelectRow方法:

var selectedTask: Task?

最后:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    selectedTask = tasks[indexPath.row]
    performSegueWithIdentifier("showTaskDetail", sender: self)
}

但是,我更倾向于传递某种ID /名称并使用新的moc执行另一次获取而不是传递核心数据对象。

您可以通过这种方式获得更少的线程问题,如果您需要深入链接到您的应用,例如通知或其他内容,这将使事情变得更加轻松。

Mocs便宜,只需使用一次,然后将它们丢弃。