我有1个UITableViewController和1个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时,这些值为空。为什么它们是空的,我在做什么错了?
答案 0 :(得分:2)
您无需进行任何操作即可呈现
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不会获取它的数据