我正在做一些非常錯誤的事情,但我不明白是什麼。 所以我派我的字符串是這樣的:使用Swift與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發送選定的圖像,並且該字符串是我的標題。
編輯:發現了問題 - 我是在同一時間讓我從服務器someString
值prepareForSegue
漸漸調用。
是'didFinishPickingMediaWithInfo'叫呢?代表連接是否正確?在打印行中添加一些文字文本來檢查。 – vadian
是的,調用了'didFinishPickingMediaWithInfo' - 我在MySecondViewController上有ImageView,它顯示了選中的圖片(例如我排除了不相關的(IMO)代碼)。委託如何連接不正確?在UIStoryboard中有「Show」標識符「MyCustomIdentifier」。你是什麼意思的文字?像'print(「這是字面文本」)',我這樣做,它按預期工作 – Xernox
是的,因爲打印一個包含空字符串的變量什麼都不輸出 – vadian