将选定的行数据传递给下一个 View Controller Swift 3
Posted
技术标签:
【中文标题】将选定的行数据传递给下一个 View Controller Swift 3【英文标题】:Passing selected row data to next View Controller Swift 3 【发布时间】:2018-01-26 17:40:19 【问题描述】:我是 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)
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:如果您使用 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,这与实际呈现的不同。
【讨论】:
我应该在哪里使用覆盖函数? 在您的 VC 中,以及其他功能。 @SogyalThundupSherpa 我在 if let vc = sender.destination as 中遇到错误? ComposeMessageVC vc.usernameLbl = 发件人为!字符串 @SogyalThundupSherpa 哎呀!应该是segue.destination
。
会是 UILabel 吗?不是字符串?因为当它是标签时出现错误,无法将类型“__NSCFString”(0x10c51e168)的值转换为“UILabel”(0x10a434d68)。【参考方案2】:
你可以试试这样的:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
...
let destination = YourViewController()
destination.usernameLbl = selectedMessage
navigationController?.pushViewController(destination, animated: true)
...
【讨论】:
以上是关于将选定的行数据传递给下一个 View Controller Swift 3的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Sql 行数据传递给 Vue 文件(Laravel 项目)
objectAtIndex 没有在 segue 中传递选定的行
制作某种具有多行的行构建器并将 JSON 数据传递给其中的最佳方法是啥。扑