在SwiftUI中获取丢弃文件的文件名可以通过使用onDrop
修饰符来实现。onDrop
修饰符可以用于接收拖放操作,并在拖放完成后执行相应的操作。
首先,我们需要在视图中添加一个onDrop
修饰符,并指定一个闭包来处理拖放操作。在闭包中,我们可以获取到拖放的项目,并从中提取出文件名。
下面是一个示例代码:
struct ContentView: View {
@State private var droppedFiles: [URL] = []
var body: some View {
VStack {
Text("Dropped Files:")
ForEach(droppedFiles, id: \.self) { fileURL in
Text(fileURL.lastPathComponent)
}
}
.onDrop(of: ["public.file-url"], isTargeted: nil) { providers -> Bool in
guard let item = providers.first else { return false }
guard let fileProvider = item.itemProvider else { return false }
fileProvider.loadItem(forTypeIdentifier: "public.file-url", options: nil) { (urlData, error) in
if let fileURL = urlData as? URL {
DispatchQueue.main.async {
droppedFiles.append(fileURL)
}
}
}
return true
}
}
}
在上述代码中,我们创建了一个ContentView
视图,并使用@State
属性包装了一个数组droppedFiles
,用于存储拖放的文件URL。
在视图的body
中,我们使用VStack
垂直布局,并在其中显示拖放的文件名。使用ForEach
循环遍历droppedFiles
数组,并使用Text
视图显示每个文件的最后一个路径组件。
在视图的onDrop
修饰符中,我们指定了接收的数据类型为public.file-url
,表示接收文件URL。在闭包中,我们首先检查提供的providers
数组是否为空,然后获取第一个提供者的itemProvider
。接着,我们使用loadItem(forTypeIdentifier:options:completionHandler:)
方法加载文件URL数据,并将其添加到droppedFiles
数组中。
这样,当用户拖放文件到视图中时,文件名将被提取并显示在界面上。
推荐的腾讯云相关产品:腾讯云对象存储(COS),它是一种安全、稳定、高效、低成本的云端存储服务,适用于存储和处理大量非结构化数据,如图片、音视频、文档等。您可以通过以下链接了解更多信息:
腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
领取专属 10元无门槛券
手把手带您无忧上云