Swift:如何将信息传递给当前视图控制器下面的视图控制器?

时间:2017-01-19 19:48:52

标签: swift xcode

我有两个视图控制器,HomeViewController和SecondViewController,它被推到堆栈顶部的HomeViewController之上。我通过Show'从HomeVC到SecondVC有一个segue。我理解如何将信息从SecondVC传递到HomeVC - 使用使用标识符的准备segue方法。但是我没有从SecondVC到HomeVC的segue,因为它嵌入在导航控制器中。在从导航堆栈中弹出SecondVC时,如何将信息(例如字符串)从SecondVC传递回HomeVC?

1 个答案:

答案 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
}