如何从视图控制器发送数据以在 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 对象作为字典以在视图控制器中使用
如何重新加载 UIPageViewController 以在 Swift 中重新加载其视图
如何重新加载UIPageViewController以在Swift中重新加载其视图