gpt4 book ai didi

swift - 如何在平台 "UIKit for Mac"上使用 SwiftUI 打开文件对话框?

转载 作者:搜寻专家 更新时间:2023-10-31 22:36:55 27 4
gpt4 key购买 nike

NSOpenPanel 在“UIKit for Mac”平台上不可用: https://developer.apple.com/documentation/appkit/nsopenpanel

如果 Apple 不提供内置方式,我猜有人会创建一个基于 SwiftUI 和 FileManager 的库显示选择文件的对话框。

最佳答案

这是使用 Catalyst 和 UIKit 为 macOS 选择文件的解决方案

在您的 swiftUI View 中:

Button("Choose file") {
let picker = DocumentPickerViewController(
supportedTypes: ["log"],
onPick: { url in
print("url : \(url)")
},
onDismiss: {
print("dismiss")
}
)
UIApplication.shared.windows.first?.rootViewController?.present(picker, animated: true)
}

DocumentPickerViewController 类:

class DocumentPickerViewController: UIDocumentPickerViewController {
private let onDismiss: () -> Void
private let onPick: (URL) -> ()

init(supportedTypes: [String], onPick: @escaping (URL) -> Void, onDismiss: @escaping () -> Void) {
self.onDismiss = onDismiss
self.onPick = onPick

super.init(documentTypes: supportedTypes, in: .open)

allowsMultipleSelection = false
delegate = self
}

required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

extension DocumentPickerViewController: UIDocumentPickerDelegate {
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
onPick(urls.first!)
}

func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {
onDismiss()
}
}

关于swift - 如何在平台 "UIKit for Mac"上使用 SwiftUI 打开文件对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56645819/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com