将选定的行数据传递到下一个视图控制器 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,这与实际呈现的不同。
我是 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,这与实际呈现的不同。