UIActivityViewControllerが正しく動作しない(画面に表示されない)問題にぶつかり、ハマってしまった。NSSavePanelを使用するが、Catalystではこれらのクラスを使用することができない。NSSavePanel同様のモーダル/シートを表示させることができる。SwiftUIを使わずにUIDocumentPickerViewControllerをpresentして使う場合は問題なく動作するこのUIDocumentPickerViewControllerは、SwiftUIを使わないCatalystアプリでは問題なく動作するのだが、SwiftUIの.sheet(isPresented:)を使って表示しようとすると空白のモーダルが表示されてしまう。ちなみに、UIImagePickerControllerの場合は下記のように問題なく表示される。UIActivityViewControllerに関してはUIDocumentPickerViewController同様の表示となってしまう。UIImagePickerControllerでは問題が起きず、UIDocumentPickerViewControllerとUIActivityViewControllerの二つで問題が発生することを考えると、ファイルアクセスのパーミッション関連の問題の可能性が考えられる。後述のワークアラウンドを使うと正しく表示できることから、パーミッション関連の問題の可能性は低そうだ。NSSavePanelを表示するコードを書いてみたところ、こちらは問題なく動作した。問題はSwiftUIとCatalystを組み合わせた場合のみ発生するようだ。SwiftUIで使う場合に追加の設定が必要な可能性も考えられるが、不具合である可能性もありそうだ。ViewControllerを一つ間に挟んでPresentするとうまくいく苦肉の策で、UIViewControllerRepresentableなViewを用意し、そこからpresentでUIDocumentPickerViewControllerを表示させるコードを書いてみたところ、正しく表示させることに成功した。SwiftUIアプリでUIDocumentPickerViewControllerを使いたい場合は上記のようなワークアラウンドを行うのが良さそう。上述の実装はSwiftUIをベースに、その中でViewControllerを使用する方法を試したが、逆にStoryboardベースでUIを作りUIHostingControllerを使って一部の画面だけSwiftUIを使用する、という方法でも大丈夫そうだ。Catalystについては、まだ登場から時間が短く情報が少ない。組み合わせて使用する場合に関する情報はさらに少ないため、このような問題にぶつかってしまった場合の対応が結構大変だ。リリースの遅延が許されないようなアプリやセキュアな作りが求められるアプリでは、この組み合わせはまだ避けておいた方が良いかもしれない。コメントをキャンセルメールアドレスが公開されることはありません。*ウェブサイトご意見、ご感想をお願いします。久しぶりに新しいアプリを開発することになった。