我有一个UITableViewController和一个UIViewController。在我的UITableViewController中,有一个didSelectRowAt方法:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
self.performSegue(withIdentifier: "PDFIdentifier", sender: nil)
}
运行此代码的:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let viewController = storyboard?.instantiateViewController(withIdentifier: "PDFFile") as! PDFFileController
viewController.data = self.file
viewController.fileName = self.fileName
}
这会在模式上显示UIViewController PDFFileController,当我在当前方法viewController.data中放置断点时,viewController.fileName将被填充。当它通过PDFFileController时,这些值是空的。为什么他们是空的,我做错了什么?
最佳答案
你不需要一段话,只需要呈现
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let viewController = storyboard?.instantiateViewController(withIdentifier: "PDFFile") as! PDFFileController
viewController.data = self.file
viewController.fileName = self.fileName
self.present(viewController,animated:true)
}
或者如果您想保留segue模态属性
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let viewController = segue.destination as! PDFFileController
viewController.data = self.file
viewController.fileName = self.fileName
}
不要在
prepareForSegue
中实例化一个vc,因为它将是一个动态的新实例,而真正的目标vc将无法获取它的数据