Я делаю что-то очень неправильно, но я не понимаю, что. Так я посылая свою строку, как это:Данные исчезают после отправки с помощью segue с помощью Swift
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, и эта строка будет моим заголовком.
EDIT: Нашел проблему - я получаю мое someString
значения от сервера в то же время, как prepareForSegue
был вызывалось.
Вызывается ли 'didFinishPickingMediaWithInfo' вообще? Правильно ли подключен делегат? Добавьте некоторый литеральный текст в строке печати, чтобы проверить это. – vadian
Да, 'didFinishPickingMediaWithInfo' называется - у меня есть ImageView на MySecondViewController, и он отображает выбранное изображение (в примере я исключил нерелевантный (IMO) код). Как делегат может быть подключен неправильно? В UIStoryboard есть «Show» segue с идентификатором «MyCustomIdentifier». Что значит буквальный текст? Подобно 'print (" this literal text ")', я сделал это и работает как ожидалось – Xernox
Да, потому что печать переменной, содержащей пустую строку, ничего не печатает – vadian