将选定的行数据传递到下一个视图控制器 Swift 3

Passing selected row data to next View Controller Swift 3

我是 Swift 编程的新手,我遇到了问题。所以我想做的是当用户选择 table 中的行时,我想获取所选行的标题,然后将其传递给下一个视图控制器。这是我的第一个视图控制器的代码:

let senderArray = ["Sogyal","Ram"]
let messageArray = ["Hello","What's up?"]

cell.senderName.text = senderArray[indexPath.row]
cell.senderMessage.text = messageArray[indexPath.row]

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    newIndex = indexPath.row

    let selectedMessage = messageArray[indexPath.row]

    let composeVC = ComposeMessageVC()
    composeVC.usernameLbl = selectedMessage

    tableView.deselectRow(at: indexPath, animated: true)
    performSegue(withIdentifier: "goToComposeM", sender: self)
}

如有任何帮助,我们将不胜感激。

您可以尝试这样的操作:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    ...
    let destination = YourViewController()
    destination.usernameLbl = selectedMessage
    navigationController?.pushViewController(destination, animated: true)
    ...
}

如果您使用 segue,则需要在 prepare(for segue: UIStoryboardSegue, sender: Any?) 中传递数据。因此,将您的 didSelectRowAt 更改为:

newIndex = indexPath.row

let selectedMessage = messageArray[indexPath.row]

tableView.deselectRow(at: indexPath, animated: true)
performSegue(withIdentifier: "goToComposeM", sender: selectedMessage)

然后覆盖prepareForSegue:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let vc = segue.destination as? ComposeMessageVC {
        vc.usernameLbl = sender as! String
    }
}

您的方法无效,因为您正在自己创建一个新的 VC,这与实际呈现的不同。