一旦在SWIFT中关闭了Popover表视图,则传递值

时间:2018-07-06 09:14:17

标签: ios swift xcode swift4

我有一个如下的情节提要:

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

有解决方案吗?弹出菜单关闭后,我需要在第二个文本框中输入弹出菜单单元格的选定值。

2 个答案:

答案 0 :(得分:1)

在您的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
        }
    }

答案 1 :(得分:0)

使用委托或闭包将值传递回最后一个对象