我有一个如下的情节提要:
单击第一个字段(选择表单)时,第二个视图将显示为弹出窗口。在弹出菜单视图中,我有一组值作为表格单元格。 因此,当我单击表视图中的任何单元格时,一旦禁用了弹出框,我就需要在第二个文本框(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
有解决方案吗?弹出菜单关闭后,我需要在第二个文本框中输入弹出菜单单元格的选定值。
答案 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)
使用委托或闭包将值传递回最后一个对象