数据无法通过
问题描述:
在我的tableview.swift中,我将用户配置文件加载到单元格中。当用户选择这些单元中的一个时,它们将被重定向到mainProfile.swift,在那里他们可以看到选定的用户配置文件。阅读几个职位后,我有这样的代码建立tableview.swift内,但它仍然没有通过是从tableview中的细胞捕获到主档次数据无法通过
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?
}
}
答
的数据,您应该简化didSelectRowAt
只是执行SEGUE:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "mainProfile", sender: self)
}
(或完全消除这种方法,而直接添加顺着接下去的故事板的电池原型。)
然后,更改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]
}
}
顺便说一句,我改变了你的目的视图控制器的类的名称,因为每个可可命名约定,类应始终以大写字母开头。显然,在你的案例中使用适当的类名是合适的。 – Rob
我不知道该如何谢谢你!这个解决方案完美地工作,再次感谢你 – Otheprogrammer