迅速:prepareForSegue indexPathForSelectedRow

fse*_*lva 3 row uitableview didselectrowatindexpath segue swift

我有一个由 cellForRowAtIndexPath 填充的 UITableView:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    var cell: UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("customTableViewCell") as! UITableViewCell
    let task = frc.objectAtIndexPath(indexPath) as! Task

        cell.textLabel?.text = task.summary
        var detail = task.detail
        var context = task.context
        var due = task.date
        var status = task.status
        var responsible = task.responsable
        var folder = task.folder

        cell.detailTextLabel?.text = "Contexte: \(context), Detail: \(detail), Status: \(status), Ending date: \(due)"

    return cell
}
Run Code Online (Sandbox Code Playgroud)

在情节提要上,当单击 tableView 的一个单元格以打开 detailViewController 时,我做了一个 segue

这是我的 didSelectRowAtIndexPath:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    let cell = tableView.cellForRowAtIndexPath(indexPath)
    self.name = cell!.textLabel!.text!
    println(self.name)
    self.performSegueWithIdentifier("Show Detail", sender: indexPath);
}
Run Code Online (Sandbox Code Playgroud)

和 prepareForSegue:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {

    if let identifier = segue.identifier{

        switch identifier {
            case "Show Detail":


                let indexPath = self.tableView.indexPathForSelectedRow()
                let editTaskVC = segue.destinationViewController as! EditTaskViewController

                editTaskVC.Name = "cell.textLabel?.text is what I would like to.."


            default: break
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

如果我这样做,editTaskVC.Name = indexPath?.description我可以看到单击的单元格的描述,<NSIndexPath: 0x78f96ab0>...例如。

是否有可能,而不是打印 indexPath 的描述,而是打印单击行的 cell.textLabel?.text?

我在论坛上看过很多很多教程或帖子,但我还没有成功解决我的问题......

感谢您的帮助。

问候。

Kel*_*Lau 5

您的意图是将 传递cell.textLabel?.text给目标视图控制器,对吗?

你在走不必要的弯路。该sender参数performSegueWithIdentifier:可以在一个AnyObject,所以你可以去正前方,并传递给它name

self.performSegueWithIdentifier("Show Detail", sender: name)

这样,prepareForSegue您需要将项目传递给下一个视图控制器。只需分配editTaskVC = sender as! String即可。

您缺少的知识是,sender参数 inperformSegueWithIdentifier: sender会自动将发件人的内容传递到prepareForSegue, 作为发件人参数。