我有一个带有 TableView 的 FirstVC,它可以连接到另一个 SecondVC,我在其中传递按下的单元格的名称。在 SecondVC 中,我有另一个 TableView ,我想用数据填充它。我有一个名为 gettingUrls() 的函数,它正在为我的 TableView 提取数据:
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 中运行该函数?
最佳答案
在设置 folderName
属性之前,您将显示 DetailVC
的 View 。 View 已加载,但还没有 folderName
,因此程序崩溃。您应该在呈现 DetailVC
之前放置行 detailVC.folderName = fileName
。
您也不需要同时使用第二行和第三行 - 要么呈现新的 View Controller ,要么将其推送到导航堆栈上,而不是两者都需要。
关于ios - 使用 segue 中的参数调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47423709/