質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Q&A

0回答

1165閲覧

SwiftUI firebase PDFの表示

atusi828

総合スコア7

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

0グッド

0クリップ

投稿2021/08/04 08:33

前提・実現したいこと

firebaseのstorageに保存したPDFデータ、swiftUIで表示したい。

発生している問題・エラーメッセージ

エラーメッセージはなくビルトは成功します。ただし、PDFビューが空のままです。

該当のソースコード

import SwiftUI import Firebase import FirebaseStorage import PDFKit class PDFInfo_Mathmatics: ObservableObject { @Published var pageNo: Int = 1 @Published var pdfView: PDFView = PDFView() @Published var stateTopButton: Bool = false func addObserver() { NotificationCenter.default.addObserver(self, selector: #selector(self.pageChanged(_:)), name: Notification.Name.PDFViewPageChanged, object: nil) } @objc func pageChanged(_ notification: Notification) { pageNo = pdfView.currentPage!.pageRef!.pageNumber stateTopButton = pdfView.canGoToFirstPage print(self.pageNo) print("page is changed") } } struct ShowPDFView: View { @ObservedObject var pdfInfo: PDFInfo_Mathmatics var body: some View { PDFViewer(pdfInfo: pdfInfo) } } struct PDFViewer: UIViewRepresentable { @ObservedObject var pdfInfo: PDFInfo_Mathmatics @ObservedObject var Firebase = firebase() @ObservedObject var pdfDocument = downloadImage() var url: URL { return Firebase.url ?? Bundle.main.url(forResource: "SampleData2", withExtension: "pdf")! } func makeUIView(context: UIViewRepresentableContext<PDFViewer>) -> PDFViewer.UIViewType { pdfInfo.pdfView.autoScales = true pdfInfo.pdfView.usePageViewController(true) pdfInfo.pdfView.displayDirection = .vertical pdfDocument.PDFdownload() pdfInfo.pdfView.document = pdfDocument.pdfDate return pdfInfo.pdfView } func updateUIView(_ uiView: UIView, context: UIViewRepresentableContext<PDFViewer>) { } } struct PdfInfoView: View { @ObservedObject var pdfInfo: PDFInfo_Mathmatics @State var enableTopButton: Bool = true var body: some View { HStack{ Text(String(pdfInfo.pageNo)) // ボタンの状態を変えてクリック無効にする場合はこちら Button(action: { pdfInfo.pdfView.goToFirstPage(self) }, label: { Text("TOP") }) .disabled(!pdfInfo.stateTopButton) } } } class downloadImage: ObservableObject{ let PDFRef = Storage.storage().reference().child("MathmaticsSampleData/SampleData.pdf") @Published var pdfDate: PDFDocument = PDFDocument() func PDFdownload() { PDFRef.getData(maxSize: 82858620){date , error in if error != nil{ print("error") }else{ self.pdfDate = PDFDocument(data: date!)! } } } } struct PDFTests6: View { @ObservedObject var object = downloadImage() @ObservedObject var pdfInfo: PDFInfo_Mathmatics = PDFInfo_Mathmatics() var body: some View { VStack { ShowPDFView(pdfInfo: pdfInfo) PdfInfoView(pdfInfo: pdfInfo) .padding() Button("Tap me!"){ self.object.PDFdownload() } } .onAppear(){ pdfInfo.addObserver() } } } struct PDFTests6_Previews: PreviewProvider { static var previews: some View { PDFTests6() } }

試したこと

間にprint関数を挟んで、firebaseと通信できるかや、PDFDocumentが存在するか確認した。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2021/08/07 00:59

PDFViewer の updateUIView の引数 uiView の型を PDFView にして、uiView.document を更新すると良いかも。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問