首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIDocumentPickerViewController in SwiftUI on mac (macCatalyst)

UIDocumentPickerViewController in SwiftUI on mac (macCatalyst)
EN

Stack Overflow用户
提问于 2019-11-27 21:22:38
回答 2查看 3.4K关注 0票数 14

因此,我一直在“移动”一个小型SwiftUI iPad应用程序到Mac,并与UIDocumentPickerViewController发生了一点碰撞。我已经将UIDocumentPickerViewController封装在一个UIViewControllerRepresentable中,如下所示:

代码语言:javascript
复制
struct DocumentPickerView: UIViewControllerRepresentable {
  func makeUIViewController(context: Context) -> UIDocumentPickerViewController {
    let documentPicker = UIDocumentPickerViewController(documentTypes: [(kUTTypeImage as String)], in: .import)
    return documentPicker
  }

  func updateUIViewController(_ uiViewController: UIDocumentPickerViewController, context: Context) {

  }
}

并以如下方式显示:

代码语言:javascript
复制
struct ContentView: View {
@State var shows = false
var body: some View {
    Button(action: { self.shows.toggle() }) {
        Text("Select File")
    }
    .sheet(isPresented: self.$shows) {
        DocumentPickerView()
    }
  }
}

On iPad all运行良好,

但是在Mac上,UIDocumentPickerViewController没有显示,我们得到了这个空白模式:

EN

回答 2

Stack Overflow用户

发布于 2022-05-02 17:56:09

我替换了不推荐的方法,并为提供的主题启动代码启用了询问权限,它可以工作。

用Xcode 13.3 / macOS 12.2测试

代码语言:javascript
复制
import UniformTypeIdentifiers
struct DocumentPickerView: UIViewControllerRepresentable {
  func makeUIViewController(context: Context) -> UIDocumentPickerViewController {
    let documentPicker = UIDocumentPickerViewController(forOpeningContentTypes: [UTType.image], asCopy: true)
    return documentPicker
  }

  func updateUIViewController(_ uiViewController: UIDocumentPickerViewController, context: Context) {

  }
}

并演示开放标准macOS选择器

票数 1
EN

Stack Overflow用户

发布于 2021-06-24 19:53:51

由于某些原因(我不知道更多的具体细节),以下内容对我起了作用(对于催化剂):

而不是使用in: .import

代码语言:javascript
复制
let documentPicker = UIDocumentPickerViewController(
    documentTypes: [(kUTTypeImage as String)], 
    in: .import
)

使用in: .open

代码语言:javascript
复制
let documentPicker = UIDocumentPickerViewController(
    documentTypes: [(kUTTypeImage as String)], 
    in: .open
)

我还没有检查功能是否在iOS中维护,但也许您可以使用某种“标志”来确定是使用.import还是.open

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59078623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档