Передайте значение, когда представление таблицы Popover отклонено в SWIFT - PullRequest
0 голосов
/ 06 июля 2018

У меня есть раскадровка, как показано ниже:

My StoryBoard

Второе представление будет отображаться как всплывающее окно при нажатии на первое поле (Выбрать форму). У меня есть набор значений в качестве ячеек таблицы в представлении таблицы всплывающего окна. Поэтому, когда я щелкаю по любой ячейке в табличном представлении, мне нужно это значение во втором текстовом поле (NewFormName), когда всплывающее окно отключено.

Я получаю значение в MainViewController. Но не может использовать его для изменения значения текстового поля.

вот мой попсовер didselectanyrow код:

  func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    var dict = FormList[(indexPath as NSIndexPath).row]

    let formname:String = dict.form_name!;

    /*created an instance called 
   'MainViewControllerInstance' of MainViewController earlier*/

    MainViewControllerInstance.SecondTextBox.text = formname
    self.dismiss(animated: true, completion: nil)

}

Это показывает ошибку:

Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

Есть решение? Мне нужно выбранное значение ячейки popover во второе текстовое поле после отклонения popver.

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

В вашем PopoverViewController:

var delegate: MainViewController?

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    var dict = FormList[(indexPath as NSIndexPath).row]
    let formname: String? = dict.form_name
    delegate?.updateTextBox(with: formname)
    self.dismiss(animated: true, completion: nil)

}

В вашем MainViewController:

func updateTextBox(with string: String?) {
    if string != nil {
        self.SecondTextBox.text = string!
    }
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "popoverSegue" {
            let popoverViewController = segue.destinationViewController as! PopoverViewController
            popoverViewController.delegate = self
        }
    }
0 голосов
/ 06 июля 2018

использовать делегат или замыкание для передачи значения обратно последнему объекту

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...