【问题标题】:Passing selected row data to next View Controller Swift 3将选定的行数据传递给下一个 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)
}

任何帮助将不胜感激。

【问题讨论】:

    标签: ios xcode swift3


    【解决方案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)
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-15
      • 2015-08-19
      • 2021-10-16
      • 2020-02-17
      • 2020-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多