Ios 如何将值传递给secondController

Ios 如何将值传递给secondController,ios,swift,uinavigationcontroller,Ios,Swift,Uinavigationcontroller,您好,我想将值传递给第二个控制器。第二个控制器连接到NavigationController,并且故事板Id已在NavigationController中设置,而不是在SecondViewController中设置 我像这样显示视图控制器 var _profile : UINavigationController{ get{ return self.storyboard?.instantiateViewControllerWithIdentifier("S

您好,我想将值传递给第二个控制器。第二个控制器连接到NavigationController,并且故事板Id已在NavigationController中设置,而不是在SecondViewController中设置

我像这样显示视图控制器

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

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

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
    的属性

显然,可以相应地更改这些标识符、类和属性名称,但这是基本方法。您可以通过编程方式调用
performsguewithidentifier
,或者在某个UI控件和下一个场景(导航控制器)之间进行切换。

是否尝试过prepareForSegue函数?否,我想在该函数中传递参数。我写的代码@我不明白你的问题-你到底有什么问题?错误消息是什么?为什么
prepareForSegue:sender:
不做你想做的事?您是否搜索了StackOverflow以查找以前的类似问题()?每次访问(获取)您的配置文件时,您都会创建一个新实例。嗯@Rob我知道如何通过segue传递参数。但我陷入了一个问题,我必须使用我共享的代码。我必须向你解释整个场景,然后我为什么需要那个代码。这就是为什么我的问题是,是否有可能以某种方式在我的code@hellosheikh-是的,但是那里似乎有很多问题和悬而未决的问题。首先,正如vikingsegundo所指出的,每次访问该属性时,您都会实例化一个新的导航控制器,这似乎不明智(如果您以这种方式使用该属性,您必须非常小心)。将导航控制器的实例化与将其添加到视图控制器层次结构的过程分离似乎是不明智的。其次,您正在引用函数(例如,
revalviewcontroller()
setFrontViewController()
),不清楚这些函数在做什么,因此,很难就代码示例向您提供进一步的建议。此外,我们无法看到您在什么上下文中调用此
案例0
代码,因此很难理解您在做什么。您正在尝试在视图已在视图层次结构中的视图控制器之间传递代码,还是正在实例化视图控制器及其视图并尝试在其中传递数据。这是一个非常非典型的配置,所以很难理解您要做什么。