我做了一些非常错误的事情,但我不明白是什么。 所以我像这样发送我的字符串:
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/