2016-10-26 2 views
0

У меня есть настройка для другого контроллера, и я пытаюсь передать какой-то текст из textView в новый контроллер. Когда я запускаю программу, я получаю сообщение об ошибке: «Неожиданно найдено ноль, а разворачивание опционального значения»Передача данных из ViewController

Я знаю значение Я передаю НЕ ноль ... Смотрите мой SEGUE код ниже

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
      if segue.identifier == "getReflection" { 
       if let destinationVC = segue.destination as? ReflectionViewController { 
        destinationVC.reflectionTextBox.text = self.reflectionTextBox.text 
//Crashes on the above expression??? 
        destinationVC.delegate = self 
       } 
      } 
     } 

Любая помощь будет оценена!

ответ

0

Ваш объект просмотра ViewController не был создан на момент подготовки, поэтому привязки IBOutlet не произошли.

В этом случае, если destinationVC.reflectionTextBox определяется как @IBOutlet weak var reflectionTextBox: UITextView!, авария происходит, когда ! опция разворачивание пытается вернуть ссылку на reflectionTextBox, который еще не связан. prepareSegue следует использовать для передачи данных контроллеру вида назначения, контроллер точки назначения может затем искать эти параметры в своей функции viewDidLoad, чтобы использовать их в любых компонентах пользовательского интерфейса.

+0

Привет, Кевин. Проблема с слабым var имеет смысл, но можете ли вы привести пример того, как передать переменную в режиме подготовки к функции segue? как бы viewDIdLoad получить к ним доступ? или, может быть, я могу просто объявить сильную переменную в принимающем контроллере, а затем использовать ее для заполнения текстового поля? –

+0

Спасибо ... Сильная переменная работает ... нет необходимости в примере –

+0

Да, это именно то, как я буду использовать ее для большинства случаев использования. Он может быть даже слабым, поскольку основная проблема здесь не была переменным подсчетом ссылок. Его просто, что привязки IB не инициализируются до тех пор, пока они не появятся на жизненном цикле. Рад, что это помогло, и спасибо за принятие ответа! –

Смежные вопросы