Передача данных в UITextField для следующего viewController, когда didSelectAtRow - PullRequest
0 голосов
/ 17 октября 2019

Когда я пытаюсь передать данные с одного контроллера представления на другой didSelectRowAt, приложение падает.

Как передать данные в текстовое поле другого контроллера представления с помощью didSelectAtRow?

Вот мой код

 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
     let  vc = self.storyboard?.instantiateViewController(withIdentifier: "DiscountDetailsController") as! DiscountDetailsController

     // MARK: This one is not setting data to textField in next view controller
     vc.offerName.text = discountArray?[indexPath.row].offerName

     // vc.offerValue.text = String((discountArray?[indexPath.row].percentage)! )
     // vc.delete.isHidden = false

     self.navigationController?.pushViewController(vc, animated: true)
}

1 Ответ

5 голосов
/ 17 октября 2019

Вы не должны пытаться манипулировать представлениями другого контроллера вида напрямую. Это нарушает принцип инкапсуляции. (Это плохой дизайн, и он может вызывать ошибки, подобные той, которую вы описываете.)

Вместо этого присвойте вашему DiscountDetailsController свойство String offerNameString. Установите это свойство в методе didSelect, указанном выше, а затем в viewWillAppear вашего DiscountDetailsController установите offerNameString в свое представление по своему желанию.

Я не понимаю ваше "... не при передачеданные это сбой ". заявление. Ваш код не работает? Если это так, это может быть связано с тем, что ваше свойство DiscountDetailsController offerName является неявно развернутым необязательным значением, равным nil. Это может привести к сбою.

...