【问题标题】:How to send data from viewcontroller to embded viewcontroller in swift 5?如何从视图控制器发送数据以在 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 已经触发一次或以编程方式添加了子视图?”

感谢您的帮助

【问题讨论】:

    标签: ios swift


    【解决方案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 方法没有得到触发
    猜你喜欢
    • 2018-08-06
    • 2015-08-06
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多