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