Ios 将所选行数据传递给下一个视图控制器Swift 3

Ios 将所选行数据传递给下一个视图控制器Swift 3,ios,xcode,swift3,Ios,Xcode,Swift3,我是Swift编程新手,我遇到了一些问题。因此,我想做的是,当用户选择表中的行时,我想获取所选行的标题,然后将其传递给下一个视图控制器。以下是我的第一个视图控制器代码: let senderArray = ["Sogyal","Ram"] let messageArray = ["Hello","What's up?"] cell.senderName.text = senderArray[indexPath.row] cell.senderMessage.text = messageArra

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

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中传递数据(对于segue:UIStoryboardSegue,发送方:任何?
)。因此,将您的
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,它与实际呈现的VC不同。

我应该在哪里使用VC中的override func?以及其他func@SogyalThundupSherpai在if let vc=sender.destination as中收到错误?ComposeMessageVC{vc.usernameLbl=发送者身份!String}@SogyalThundupSherpa oops!它应该是
segue.destination
。它会是UILabel吗?不是一根绳子?当标签为“”时,我收到一个错误,无法将“”类型的值(0x10c51e168)强制转换为“”UILabel“(0x10a434d68)。