我没有使用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)
}
}
我该如何解决?有什么帮助吗?
非常感谢!
答案 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)