【问题标题】:Passing NSString between ViewControllers在 ViewController 之间传递 NSString
【发布时间】:2015-02-20 14:29:08
【问题描述】:

我需要在两个视图控制器之间传递一个变量(databasePath - 这是一个NSString)。
在我编码的控制器中:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    var thirdVC: ThirdViewController = segue.destinationViewController as ThirdViewController

    thirdVC.databasePath = databasePath
}

如何定义变量,或者在接收控制器中编写接收语句?

我总是收到nil。

在 from ViewController 中,databasePath 在这里声明。这为我创建了一个 SQL 数据库,我可以使用它来存储用户输入的信息。

    let filemgr = NSFileManager.defaultManager()
    let dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory,
        .UserDomainMask, true)

    let docsDir = dirPaths[0] as String

    databasePath = docsDir.stringByAppendingPathComponent("contacts.db")

databasePath携带相关信息查找数据库存放位置。

我在 ThirdViewController 上进行了设置,以便您可以查看存储在数据库中的内容。 代码没有错误。 我使用println("\(databasePath)") 发现在 ThirdViewController 上没有任何价值。

如何定义变量,或在接收控制器中编写接收语句以使其保持其值?

【问题讨论】:

  • 源 VC 中维护的 databasePath 变量在哪里?您是否已将 databasePath 声明为目标 V​​C 中的属性?
  • 是的,此时databasePath 是什么?如果设置断点,或者打印databasePath是否正确?您编写的代码看起来应该可以工作,但如果没有更大的图景,我们无法确定。
  • 我将编辑问题以尝试回答您的问题。
  • 我希望我的编辑可以帮助您理解我遇到的问题。任何帮助将不胜感激。

标签: swift uiviewcontroller nsstring segue


【解决方案1】:

根据您的问题,我了解您希望将“databasePath”NSString 传递给“thirdVC:ThirdViewController”,以及如何在“ThirdViewController”中声明此变量以访问其传递的值,

那么你做得很好,只是你必须声明同名变量,即databasePath及其数据类型,即NSString,并在你需要它的值的任何地方使用它,只需确保在视图控制器之后调用'ThirdViewController',即通过价值。

注意:ThirdViewController 应该是传递值的 viewcontroller 类的子类。

希望你能得到答案:)

【讨论】:

    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 2012-04-14
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    相关资源
    最近更新 更多