ios - 从 2 个 View Controller 传递数据而不使用 segue

标签 ios swift xcode

我有一个 mainviewcontroller 和一个弹出 View Controller ,打开时无需转场。

弹出 View Controller 从 Firebase 接收数据,然后我需要将此数据附加到主视图 Controller 中的数组中。

我怎样才能做到这一点?

(我尝试在 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)

最佳答案

您需要连接这些类,以便弹出类知道在收到数据后如何处理数据。这是一个在 Playground 中运行的示例结构,您应该能够将其应用到实际的类中。

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()

关于ios - 从 2 个 View Controller 传递数据而不使用 segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56795967/

相关文章:

ios - 在同一个按钮中多次展开 - Swift

ios - 显示在 Collection View Controller 之间选择的图像

ios - 保护 iPhone 上的应用程序数据

ios - 如何为 UITableViewCell 的 .selectedBackgroundView 设置自定义边距

ios - 约束后堆栈大小不正确

ios - dyld : Library not loaded: @rpath/Alamofire. 框架/Alamofire 图像未找到

ios - TableViewController 中的 AdBannerView 显示在 TableView 之后

ios - Swift viewForAnnotation pin zposition 不在顶部

ios - 字典中的字符串值是字符串的两倍

ios - 如何仅在非越狱设备(iPhone/iPad)上安装应用程序,但不在越狱设备上安装应用程序