如何将值传递给secondController

时间:2016-04-06 17:44:23

标签: ios swift uinavigationcontroller

你好我想将值传递给我的第二个Controller。第二个Controller连接到NavigationController,故事板ID已经在NavigationController中设置,而不是在SecondViewController中设置

我显示像这样的ViewControllers

var _profile : UINavigationController{
        get{
            return self.storyboard?.instantiateViewControllerWithIdentifier("ShowUserProfileTableViewController") as! UINavigationController
        }
    }

    case 0:

                if (self.revealViewController().frontViewController.isKindOfClass(UINavigationController)){
                    let nav : UINavigationController = self.revealViewController().frontViewController as! UINavigationController
                    if (!nav.viewControllers[0].isKindOfClass(ShowUserProfileTableViewController)){
                        self.revealViewController().setFrontViewController(self._profile, animated: true)
                    }
                }
                else{
                    self.revealViewController().setFrontViewController(self._profile, animated: true)
                }
                break

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用segues并实现prepareForSegue,如下所示:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "ShowSecondViewController" {
        let navigationController = segue.destinationViewController as! UINavigationController
        let targetViewController = navigationController.viewControllers.first as! SecondViewController
        targetViewController.someString = "foo"
    }
}

现在,假设

  • segue的故事板标识符为ShowSecondViewController;
  • 目标视图控制器是一个导航控制器,其根视图控制器"有一个基类SecondViewController;和
  • SecondViewController有一些名为someString的属性。

显然,相应地更改这些标识符,类和属性名称,但这是基本方法。并且您要么以编程方式调用performSegueWithIdentifier,要么只是在某个UI控件和下一个场景(导航控制器)之间有一个segue。