在两个丢失值的 ViewController 之间传递 UIImage 数组

Passing UIImage array between two ViewControlllers losing values

我正在内存中的 2 个 VC 之间传递图像数组。我不知道这是否是一个问题并且不可能做到?当第二个视图控制器引用第一个 UIImages 数组时,我在第二个视图控制器中得到空白图像。

class ViewPDFAfterSnapshotViewController: UIViewController {
    @IBOutlet weak var pdfView: PDFView!
    @IBOutlet weak var confirmUploadButton: UIButton!
    
    @IBOutlet weak var CancelUploadButton: UIButton!
    
    
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let vc = CameraViewController()
        // convert to PDF
        let pdfDocument = PDFDocument()
        for i in 0 ..< vc.images.count {
            let image = vc.images[i]
              let pdfPage = PDFPage(image: image)
              pdfDocument.insert(pdfPage!, at: i)
        }
        
        pdfView.displayMode = .singlePageContinuous
        pdfView.autoScales = true
        pdfView.displayDirection = .vertical
        pdfView.document = pdfDocument
        
    }
    

编辑 1:好的,根据我收到的反馈和链接的文章,我这样做了:

func transistionToPDFView(){
        
        let vc = ViewPDFAfterSnapshotViewController()
        vc.images = images
        
        
        navigationController?.pushViewController(vc, animated: true)
        

        
        view.window?.rootViewController = vc
        view.window?.makeKeyAndVisible()
    }

您正在创建 CameraViewController 的新实例。那是不正确的。每次您创建 CameraViewController 的新实例时,它都会是一个全新的引用。

您应该访问 CameraViewController.

的已经可用/创建的实例

在视图控制器之间执行 segue 或导航时,您可以将数据从一个视图控制器传递到另一个视图控制器。

假设您有 A 和 B 视图控制器,在 A 到 B 之间导航时,您可以这样做:

let b = B() // Instantiate B view controller from storyboard with identifier

b.images = images // Data to pass to the next view controller

如果想正确理解,可以参考这篇文章:

https://www.hackingwithswift.com/example-code/system/how-to-pass-data-between-two-view-controllers