问题描述
我从字面上都没有更改任何代码,但是在更新到Xcode 12之后,准备Segue方法传递数据的操作不再起作用。
override func prepare(for segue: UIStoryboardSegue,sender: Any?) {
if segue.identifier == "toDetails" {
if let indexPath = sender as? IndexPath,let nextVC = segue.destination as? JobDetailViewController {
nextVC.jobDetails =
JobDetailViewController.JobDetails(jobDetail: jobs[indexPath.row].text,userName: jobs[indexPath.row].addedByUser!,jobImage: jobs[indexPath.row].jobImage,downloadURL: jobs[indexPath.row].downloadURL!)
}
}
}
func tableView(_ tableView: UITableView,didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "toDetails",sender: indexPath.row)
}
DetailedVC:
var jobDetails: JobDetails?
struct JobDetails {
var jobDetail: String
var userName: String
var jobImage: UIImage?
var downloadURL: String?
}
(例如) 通过 print(“ Hello(jobDetails?.userName)”),我得到“ Hello nil” 作为输出
新的Swift / Xcode版本是否进行了任何更改? 我也没有收到任何错误/警告
解决方法
请看一下,您传递的是Int的indexPath.row,并准备将其解析为IndexPath。
func tableView(_ tableView: UITableView,didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "toDetails",sender: indexPath)
}