数据无法通过

问题描述:

在我的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] 
    } 
} 
+1

顺便说一句,我改变了你的目的视图控制器的类的名称,因为每个可可命名约定,类应始终以大写字母开头。显然,在你的案例中使用适当的类名是合适的。 – Rob

+0

我不知道该如何谢谢你!这个解决方案完美地工作,再次感谢你 – Otheprogrammer