我正在尝试用UIKit创建一个PDFView,并将来自先前SwiftUI视图的数据传递给它。数据本身是一个带有文件名的字符串。不知何故,字符串不会从UIViewControllerRepresentable传递到UIViewController,而是保留为空。我真的找不到为什么会发生这样的事情。你能检查一下我哪里错了吗?我希望这段代码足够了。
我正在使用NavigationLink(目标:FileViewerWrapper(文件:“某个字符串”)) {}
import PDFKit
import UIKit
import SwiftUI
let pdfView = PDFView()
class FileViewer: UIViewController {
var file = String()
override func viewDidLoad() {
super.viewDidLoad()
print("\n\n\n-----------------------\(file)\n-------------------------------\n\n\n")
pdfView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(pdfView)
pdfView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
pdfView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true
pdfView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
pdfView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true
guard let path = Bundle.main.url(forResource: file, withExtension: "pdf", subdirectory: "Files") else { return }
if let document = PDFDocument(url: path) {
pdfView.document = document
}
}
}
struct FileViewerWrapper: UIViewControllerRepresentable {
var file: String
typealias UIViewControllerType = FileViewer
func makeUIViewController(context: UIViewControllerRepresentableContext<FileViewerWrapper>) -> FileViewerWrapper.UIViewControllerType {
return FileViewer()
}
func updateUIViewController(_ uiViewController: FileViewerWrapper.UIViewControllerType, context: UIViewControllerRepresentableContext<FileViewerWrapper>) {
uiViewController.file = file
//When I put print(file) here, it's fine
}
}结果是://
它应该是://
发布于 2019-11-21 10:31:47
当你只想传递数据时,使用一个单独的UIViewControllerRepresentable,它将拥有你的UIViewController,然后将数据从视图传递到ViewController。
struct CameraViewControllerRepresentable : UIViewControllerRepresentable {
typealias UIViewControllerType = CameraViewController
var patientObject: PatientObj
public func makeUIViewController(context: UIViewControllerRepresentableContext<CameraViewControllerRepresentable>) -> CameraViewController {
let cameraVC = UIStoryboard(name: "Camera", bundle: nil).instantiateViewController(identifier: String(describing: CameraViewController.self)) as! CameraViewController
cameraVC.patientObj = patientObject
return cameraVC
}
func updateUIViewController(_ uiViewController: CameraViewController, context: UIViewControllerRepresentableContext<CameraViewControllerRepresentable>) {
}
}发布于 2019-10-12 17:15:37
我想我已经搞定了:
func makeUIViewController(context: UIViewControllerRepresentableContext<FileViewerWrapper>) -> FileViewerWrapper.UIViewControllerType {
let uiViewController = FileViewer()
uiViewController.file = file
return uiViewController
}func updateUIViewController现在为空
https://stackoverflow.com/questions/58352016
复制相似问题