我有两个视图控制器,HomeViewController和SecondViewController,它被推到堆栈顶部的HomeViewController之上。我通过Show'从HomeVC到SecondVC有一个segue。我理解如何将信息从SecondVC传递到HomeVC - 使用使用标识符的准备segue方法。但是我没有从SecondVC到HomeVC的segue,因为它嵌入在导航控制器中。在从导航堆栈中弹出SecondVC时,如何将信息(例如字符串)从SecondVC传递回HomeVC?
答案 0 :(得分:0)
你需要从HomeViewController传递一个ViewModel
到SecondViewController,你要做的是给你的Segue一个标识符,然后在你的HomeViewController中覆盖prepareForSegue:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
if segue.identifier == "mySegueIdentifier" {
if let destination = segue.destinationViewController as? SecondViewController {
destination.aViewModel = aViewModel;
}
}
}
在SecondViewController中,您需要声明ViewModel:
class SecondViewController: UIViewController {
var aViewModel: AViewModel?
//rest of code
}
创建一个ViewModel,使用结构类型:
struct AViewModel
{
let AValueIWantToPassAround: String
let AnotherValueIWantToPassAround: Int
}