数据未能通过

时间:2017-01-09 20:53:30

标签: ios swift uitableview uiviewcontroller

在我的tableview.swift中,我将用户配置文件加载到单元格中。当用户选择其中一个单元格时,它们会被重定向到mainProfile.swift,在那里他们可以看到所选的用户配置文件。在阅读了几篇帖子之后,我在tableview.swift中设置了这个代码,但它仍然没有将从tableview的单元格中捕获的数据传递给mainProfile

var mainProfile: mainProfile?
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let user1 = self.users[indexPath.row]
    mainProfile?.user2 = user1
    print(mainProfile?.user2 as Any)
    performSegue(withIdentifier: "mainProfile", sender: self)

}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "mainProfile" {
        let viewControllerAccept = segue.destination as! mainProfile
        let user2 = sender as Any?
        viewControllerAccept.user2 = user2 as! User?
    }
}

1 个答案:

答案 0 :(得分:2)

您应该简化didSelectRowAt以执行segue:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    performSegue(withIdentifier: "mainProfile", sender: self)    
}

(或者完全删除此方法,只需将segue直接添加到故事板中的单元格原型。)

然后,更改prepare(segue:)以使用indexPathForSelectedRow来了解选择了哪一行:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "mainProfile" {
        let indexPath = tableView.indexPathForSelectedRow!
        let viewController = segue.destination as! MainProfileViewController
        viewController.user2 = users[indexPath.row]
    }
}