ios - 使用 Swift 通过 segue 发送数据后消失

标签 ios swift uiimagepickercontroller segue

我做了一些非常错误的事情,但我不明白是什么。 所以我像这样发送我的字符串:

var someString = "My String"
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if (segue.identifier == "MyCustomIdentifier") {
        let vc = segue.destinationViewController as! MySecondViewController

        vc.someString = someString
    }
}

MySecondViewController 获取 someString 的值:

var someString = String()
override func viewDidLoad() {
    super.viewDidLoad()
    print(someString) //Prints String as expected, all good
}

但是当我需要它在 imagePickerController 中访问时:

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
    print(someString) //Nothing is printed, there is no value in someString
}

这里发生了什么?我需要 imagePickerController 中的该字符串值,因为我将使用 Alamofire 发送选定的图像,并且该字符串是我的 header 。

编辑:发现问题 - 我在调用 prepareForSegue 的同时从服务器获取 someString 值。

最佳答案

字符串是 swift 中的值类型,因此第二个 ViewController 创建一个全新的实例。需要传递引用,因此尝试在第二个 ViewController 中将其声明为可选:

var someString : String!

关于ios - 使用 Swift 通过 segue 发送数据后消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34228477/

相关文章:

iphone - AVPlayer Streaming - 在特定时间播放流

iphone - 获取 iOS 中移动证书中包含的 pfx 文件

swift - 为什么不减少短路?

swift - Swift "as"和 "as!"类型转换操作有什么区别?

ios - 保存视频;使用 UIImagePickerController; iOS 8 swift

iOS - 无法使用 HTTP 发布请求将多部分表单数据成功发布到服务器

ios - 重命名文件(如果文件已存在)

ios - 如何更改 UIImagePickerController 导航栏字体?

ios - Xcode 7 失败,Command/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc 失败,退出代码为 1

swift - UIImagePickerControllerDelegate 错误