向后传递数据而不使用segue?

时间:2018-12-26 09:01:08

标签: swift xcode delegates segue protocols

我没有使用storyboard,如何在不使用Xcode 4.2的情况下以编程方式向后传递数据?

我曾尝试以编程方式创建segue(以通过委托和协议向后传递数据),但我被困住了...因为它包括segue的标识符名称...

我在不使用情节提要的情况下编写我的应用程序...

    @objc func getWeatherTapped() {

        let mainStoryBoard = UIStoryboard(name: "Main", bundle: Bundle.main)

        guard let destinationViewController = mainStoryBoard.instantiateViewController(withIdentifier: "") as? WeatherViewController else {

            print("Couldn't find the viewController")

            return

        present(destinationViewController, animated: true, completion: nil)
    }
}

我该如何解决?有什么帮助吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

首先创建一个click,它定义了您要允许的操作/操作...

protocol

在目标控制器中定义protocol DataPassingDelegate { var someReallyImportantData: String { get set } // Or what ever type } 类型的属性...

protocol

在源视图控制器中,遵循class DestinationViewController: UIViewController { var dataPassingDelegate: DataPassingDelegate? //... } DataPassingDelegate

protocol

在从源控制器推送目标视图控制器之前,请设置委托...

class SourceViewController: UIViewController, DataPassingDelegate {
    var someReallyImportantData: String = "" {
        didSet {
            // Update if you need to or simply
            // check the state in viewWillAppear
        }
    }
    //...
}

在弹出目标视图控制器之前,将数据传回...

destinationViewController.dataPassingDelegate = self
present(destinationViewController, animated: true, completion: nil)