如何从视图控制器发送数据以在 swift 5 中嵌入视图控制器?

Posted

技术标签:

【中文标题】如何从视图控制器发送数据以在 swift 5 中嵌入视图控制器?【英文标题】:How to send data from viewcontroller to embded viewcontroller in swift 5? 【发布时间】:2020-06-10 05:31:51 【问题描述】:

我有一个视图控制器,我正在使用容器视图并在其中嵌入另一个视图控制器(使用情节提要)。我正在尝试使用 prepersegue 将数据从视图控制器传递到嵌入式视图控制器,但无法做到这一点。

有没有更好的方法将数据从视图控制器传递到嵌入式视图控制器。

import UIKit

class ViewMyDiary: UIViewController 

    var alerts = [blogDataModel]() //getting value here from another viewcontroller 


    override func viewDidLoad() 
        super.viewDidLoad()
    

    override func viewWillAppear(_ animated: Bool) 
         self.performSegue(withIdentifier: "calenderSegue", sender: self);

    

     func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 

        if (segue.identifier == "calenderSegue")
        
            let vc: CalenderViewController = segue.destination as! CalenderViewController
            vc.alerts = alerts
        
    

为此,我收到错误消息,例如“容器视图中有意外的子视图。可能嵌入 segue 已经触发一次或以编程方式添加了子视图?”

感谢您的帮助

【问题讨论】:

【参考方案1】:

您不需要为嵌入 segue 执行此操作..embed segue 自动触发一次或以编程方式添加子视图

override func viewWillAppear(_ animated: Bool) 
         self.performSegue(withIdentifier: "calenderSegue", sender: self);

    

override func prepare(for segue: UIStoryboardSegue, sender: Any?) 

     if let vc: CalenderViewController = segue.destination as? CalenderViewController 
          vc.alerts = alerts
      

 

删除此代码,您就可以开始了

【讨论】:

感谢您的帮助。但不知何故,我的 prepareForSegue 没有被调用,你能帮忙解决这个问题吗?如果我做错了什么? 你正在使用容器视图? 是的..我正在使用容器视图并将 calenderviewcontroller 嵌入到该视图中 在此方法中添加断点...在if (segue.identifier == "calenderSegue")之前 是的..我试过这个..但是 prepareForSegue 方法没有得到触发

以上是关于如何从视图控制器发送数据以在 swift 5 中嵌入视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 从模型中的 API 调用返回 JSON 对象作为字典以在视图控制器中使用

如何在codeigniter中将数据从视图发送到控制器

如何重新加载 UIPageViewController 以在 Swift 中重新加载其视图

如何重新加载UIPageViewController以在Swift中重新加载其视图

如何在 swift iOS 中使用 swift 高阶函数从本地 json 创建 ViewModel

如何在1项标签栏控制器中制作顶部标签栏以在swift中显示多个视图控制器?