Заполнить текстовое поле.текст после перехода

#ios #swift #xcode #uitextfield #segue

#iOS #swift #xcode #uitextfield #segue

Вопрос:

У меня есть переход типа show. Я хочу, nameTextField чтобы destinationViewController содержал в нем некоторый текст при выполнении перехода. Я пытался делать:

 override func prepare (for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "ToEditScreen" {
     
        let svc = segue.destination as! EditViewController
        svc.nameTextField.text = cars[selectedIndex!].name //crashes
        svc.nameString = cars[selectedIndex!].name
        }
    }
  

Ошибка, которую я получаю: неожиданно найдено nil при неявном развертывании необязательного значения.
Я знаю, что cars[selectedIndex!].name это не ноль.
Если я удалю строку текстового поля, все будет в порядке и nameString получит свое значение, равное cars[selectedIndex!].name . Я знаю, что могу сделать:

 nameTextField.text = randomString
  

но это похоже на дополнительный шаг. Могу ли я заполнить текстовое поле.текст из оригинала ViewController ?

Комментарии:

1. На данный момент представление не загружено. Вам нужно переопределить viewDidLoad метод в вашем EditViewController и заполнить текстовое поле. Также есть неприятный способ, вызвать svc.loadViewIfNeeded() сразу после let svc = segue.destination....

2. Почему это неприятно?

Ответ №1:

Вы можете добавить строковую переменную в целевой vc и установить ее там или

 let svc = segue.destination as! EditViewController
svc.loadViewIfNeeded() // add this line
svc.nameTextField.text = cars[selectedIndex!].name