问题使用Swift中的prepareForSegue方法传递自定义单元格的内容

fs_*_*gre 2 uitableview ios swift

我有一个UITableView包含标签的自定义单元格.我想要的是能够在选择行时将此标签的内容传递给第二个视图控制器.
我在没有自定义单元格的表格上运行的代码很好:

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

    let cell = tableView.dequeueReusableCellWithIdentifier("reusableCell", forIndexPath: indexPath) as! CustomCell

    //labelDisplayLedQty is the name of the custom label
    cell.labelDisplayLedQty.text = inputLedQty.text

    return cell
}
Run Code Online (Sandbox Code Playgroud)

这是我在该prepareForSegue方法中的代码.正如我所说,如果我将它与不包含自定义单元格的表一起使用,此代码可以正常工作.

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

    let rowIndex: NSIndexPath = tableList.indexPathForSelectedRow!
    let selectedRow: UITableViewCell = tableList.cellForRowAtIndexPath(rowIndex)!
    let contentFromSelectedRow: String = selectedRow.textLabel!.text!

    if let secondVC = segue.destinationViewController as? DriverDetailsViewController where
       segue.identifier == "segueDriverDetails" {
        secondVC.messageContentFromMainController = contentFromSelectedRow + " This message is from main viewController"
    }
}
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,当我选择一行时出现以下错误,这是有意义的,因为我没有使用默认的textLabel:

fatal error: unexpectedly found nil while unwrapping an Optional value
Run Code Online (Sandbox Code Playgroud)

我试着换......

let contentFromSelectedRow: String = selectedRow.textLabel!.text!
Run Code Online (Sandbox Code Playgroud)

至...

let contentFromSelectedRow: String = selectedRow.labelDisplayLedQty!.text!
Run Code Online (Sandbox Code Playgroud)

但后来我得到以下提示错误消息:

Value of type 'UITableViewCell has no member labelDisplayLedQty'
Run Code Online (Sandbox Code Playgroud)

有人能告诉我,为了能够将所选行的内容传递给第二个视图控制器,我需要做些什么?

谢谢

Mar*_*sel 5

你说,你正在使用自定义UITableViewCell.因此,您必须转换selectedRow为具有该自定义单元格的类型.试试这个:

let selectedRow = tableList.cellForRowAtIndexPath(rowIndex)! as! CustomTableViewCellName
Run Code Online (Sandbox Code Playgroud)

这应该可以让您访问自定义标签.