在 StoryBoard 中传递价值

Posted

技术标签:

【中文标题】在 StoryBoard 中传递价值【英文标题】:Passing Value in StoryBoard 【发布时间】:2016-10-13 07:32:38 【问题描述】:

我想在 storyboard 中通过 init 传递值。在 xib 中使用的这段代码运行良好。但是在情节提要中,我的应用程序崩溃了。这是我的代码 sn-ps 请帮助任何帮助将不胜感激。

在FirstviewController中

let storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
        viewControllerd = storyboard.instantiateViewControllerWithIdentifier("a") as? SecondViewController
        viewControllerd = SecondViewController.init(title: "helo")
        addViewControllerAsChildViewController(viewControllerd!)

第二视图控制器

        init(title : String)
        
            a = title
            super.init(nibName: "SecondViewController", bundle: nil)
        

        required init(coder aDecoder: NSCoder)
        
        super.init(coder: aDecoder)!
        

【问题讨论】:

请显示崩溃日志。 【参考方案1】:
viewControllerd = SecondViewController.init(title: "helo")

替换代码
viewControllerd.title = "helo"

并且不需要以下代码:

init(title : String)

    a = title
     super.init(nibName: "SecondViewController", bundle: nil)


【讨论】:

比在 SecondViewController 类中创建日期变量并传递如下:viewControllerd.date = Date() 或替换 init(title : String, date:Date) a = title super.init(nibName: "SecondViewController", bundle: nil) 【参考方案2】:

您的代码一团糟。 由于双重设置为viewControllerd,应用程序可能会崩溃。 它被定义为常量 (let),但您为其设置了两次值:viewControllerd = storyboard.instantiateViewControllerWithIdentifier("a") as? SecondViewControllerviewControllerd = SecondViewController.init(title: "helo")

此外,super.init(nibName: "SecondViewController", bundle: nil) 在您使用情节提要时是无关紧要的。init(coder aDecoder: NSCoder) 在您从情节提要中实例化视图控制器时调用,您只需将值传递给它即可。

您可以为新创建的视图控制器的属性设置一个值。 例如。

let storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
let viewControllerd = storyboard.instantiateViewControllerWithIdentifier("a") as? SecondViewController
viewControllerd.a = "helo"
addViewControllerAsChildViewController(viewControllerd!)

【讨论】:

先生,我们可以不通过 init 传递值,就像我们在 xib 中所做的那样 @Rishab 我不明白你的评论。您不能将代码中的参数传递给从情节提要实例化的视图控制器。 再一次,您可以通过为某个属性设置值来传递参数。

以上是关于在 StoryBoard 中传递价值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 didSelectRowAtIndexPath(在 Swift 中)在两个 Storyboard 之间传递日期?

在 Xcode/Swift 中使用预设置视图

iOS:以编程方式更改选项卡 - 故事板

在 iOS 中传递上下文以将 Core Data 与 Storyboard 一起使用

XCode 崩溃导致故事板消失

是否可以使用带有参数的 CallMethodAction 交互?