将数据从导航控制器中呈现的视图传递回自定义视图 (XIB)

Pass data from presented View in Navigation Controller, back to custom view (XIB)

我正在使用自定义 XIB 文件作为视图控制器的弹出窗口。 XIB 文件包含两个按钮 =“发送”和“添加附加字段”。选择按钮以添加其他字段会显示另一个嵌入在导航控制器中的视图控制器。当用户登陆该控制器屏幕并选择他们的额外选项时,该数据应传回 XIB 的 var extraOptions = [String]() 字段。从那里,用户应该能够通过选择“发送”来上传他们的post。

我遇到的问题是数据没有从导航控制器中嵌入的视图控制器传回 XIB

这可能吗?我已经尝试了我能想到的所有解决方案:protocol/delegate 方法,在 XIB 文件中设置 var extraOptions 字段,在关闭它并返回到 XIB 之前从呈现的控制器中设置,这是我最新的尝试:

名为 CreatePostModal 的自定义 XIB(弹出的视图控制器)

@objc func addExtraOptions(_ sender: UITapGestureRecognizer? = nil) {
    let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let vc: UINavigationController = storyboard.instantiateViewController(withIdentifier: "ExtraOptionsNavigationController") as! UINavigationController
    vc.delegate = self
    vc.modalPresentationStyle = .fullScreen
    self.present(vc, animated: true, completion: nil)
}

ExtraOptionsViewController

@IBAction func donePressed(_ sender: Any) {
    if let navController = presentingViewController as? UINavigationController {
        let presenter = navController.topViewController as! CreatePostModal
        presenter.extraOptions = self.extraOptionsSelected
        print("These are the options selected ==> \(present.extraOptions)") //this prints the options and shows that they're there, but the array is empty whenever a user tries to upload the data
    }
    dismiss(animated: true, completion: nil)
}

如您所见,在 print 方法中,它打印变量并显示数据在那里,但是当返回 XIB 文件并且用户保存并上传数据时,该字段显示为空.

如何从导航控制器中嵌入的视图将数据传回 XIB?

您可以通过三种方式使用其中一种:

  • NSNotificationCenter
  • 代表
  • 关闭