微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用委托/协议在 3 个视图之间传递传递到根视图

如何解决如何使用委托/协议在 3 个视图之间传递传递到根视图

我构建了一个拍照应用,用户可以查看这张照片。之后他可以看到这张照片 在 uicollection 视图中

-(1 个视图 - PicEditorViewController) 用户拍照并将数据传递给下一个视图使用

let previewVC = storyboard?.instantiateViewController(withIdentifier: "PreviewViewController") as! PreviewViewController
previewVC.delegate = self // using the delegate 

-(2 视图 - PreviewViewController) 用户查看图片并按下按钮将日期传递到下一个视图(根视图)使用

    self.delegate?.previewVC1(preview: true,img : img.image)
    self.navigationController?.popToRootViewController(animated: true)

在同一个视图中,我初始化了一个协议

protocol PreviewViewControllerDelegate  
{
    func previewVC1(preview : Bool,img : img.image)
    
}
  • (3 视图 SavePicsViewController) Root 视图

用户在uicollection视图中看到图片

extension SavePicsViewController : PreviewViewControllerDelegate
{
    func previewVC1(preview: Bool,img : img.image)
    {
         savedPic.appen(img) // the array fill the collection 
        self.collectionView.reloadData()
        self.collectionView.delegate = self
}
}

但是我无法在扩展中调用 previewVC1 函数的问题

&savedPic IS 0

我该如何解决这个问题

解决方法

SavePicsViewController 需要具有 weak var delegate: PreviewViewControllerDelegate 属性,并且需要在实例化它时设置它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。