将选定的行数据传递给下一个 View Controller Swift 3 [英] Passing selected row data to next View Controller Swift 3
问题描述
我是 Swift 编程的新手,但遇到了问题.所以我想要做的是当用户选择表中的行时,我想获取所选行的标题,然后将其传递给下一个视图控制器.这是我的第一个视图控制器的代码:
I am new to Swift Programming and I am having problems. So what I want to do is when the user selects the row in a table then I want to grab the selected row's title and then pass it to the next View Controller. Here is my code for the First View Controller:
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)
}
任何帮助将不胜感激.
推荐答案
如果您使用的是 segue,则需要在 prepare(for segue: UIStoryboardSegue, sender: Any?)
中传递数据.因此,将您的 didSelectRowAt
更改为:
You need to pass the data in prepare(for segue: UIStoryboardSegue, sender: Any?)
if you are using a segue. So change your didSelectRowAt
to this:
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 不同.
Your approach did not work because you are creating a new VC yourself, which is a different one from the one that is actually presented.
这篇关于将选定的行数据传递给下一个 View Controller Swift 3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!