我有一个mainviewcontroller和一个弹出视图控制器,打开时没有提示。
弹出视图控制器从Firebase接收数据,然后我需要将此数据附加到mainviewcontroller中的数组。
我该怎么做?
(我试图在mainviewcontroller中创建popupviewcontroller的属性,但导致应用崩溃)
这是打开弹出窗口的代码:
@IBAction func showPopUp(_ sender: Any) {
let popOverVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "sbPopUp") as! PopUpViewController
self.addChild(popOverVC)
popOverVC.view.frame = self.view.frame
self.view.addSubview(popOverVC.view)
popOverVC.didMove(toParent: self)
答案 0 :(得分:0)
您需要连接这些类,以便弹出类知道接收到数据后如何处理。这是一个在操场上工作的示例结构,您应该可以将其应用于实际课程。
class MainClass {
func showPopUp() {
let popOverVC = PopUpClass()
popOverVC.update = addToArray
popOverVC.receivedData()
}
func addToArray() {
print("Adding")
}
}
class PopUpClass {
var update: (()->())?
func receivedData() {
if let updateFunction = update {
updateFunction()
}
}
}
let main = MainClass()
main.showPopUp()
答案 1 :(得分:0)
或者您可以创建一个全局变量,以便可以在任何地方访问它。 ...最好传递数据,但我只是想在这种情况下会更容易,因此可以在整个项目的任何位置访问该变量。
答案 2 :(得分:0)
如果只是通知,则可以在警报中显示它,但是如果您不想使用警报,则我提供的呈现另一个视图控制器的提议不是这样,请尝试我的代码:
//if you have navigation controller ->
let vc = self.storyboard?.instantiateViewController(
withIdentifier: "storyboadrID") as! yourViewController
self.navigationController?.pushViewController(vc, animated: true)
//if you don't use navigation controller ->
let VC1 = self.storyboard!.instantiateViewController(withIdentifier: "storyboadrID") as! yourViewController
self.present(VC1, animated:true, completion: nil)
如果您要将任何数据或参数传递给目标视图控制器,也可以在呈现视图控制器之前像这样放置:
VC1.textView.text = "test"