我有一个带有表视图的FirstVC,带有Segue到另一个SecondVC的表名,在这里我传递了按下的单元格的名称。在SecondVC中,我有另一个要填充数据的表格视图。我有一个名为GettingUrls()的函数,该函数为我的表视图提取数据:

DataService.instance.mainRef.child("Folders").child("\(folderName)").observeSingleEvent(of: .value) { (snapshot: DataSnapshot) in...}


其中,“ folderName”是FirstVC的值。此功能已实现为“拉动刷新功能”,并且效果很好。但是,当我尝试在viewDidLoad中运行函数本身时,由于folderName值为空,该应用程序始终崩溃。我只是不明白为什么这时来自segue的值在刷新功能中可用,而在viewDidLoad中不可用。

这是segue的代码:

let detailVC = self.storyboard?.instantiateViewController(withIdentifier: "DetailVC") as! DetailVC
        self.navigationController?.pushViewController(detailVC, animated: true)
        self.present(detailVC, animated: true, completion: nil)
        detailVC.folderName = fileName


如何在viewDidLoad中运行该功能?

最佳答案

在设置DetailVC属性之前,需要先显示folderName的视图。该视图已加载,但还没有folderName,因此程序崩溃。在显示detailVC.folderName = fileName之前,应先放置DetailVC行。

您也不需要第二行和第三行-要么显示新的视图控制器,要么将其推入导航堆栈,而不是两者都显示。

10-08 18:31