我整理了一个快速文件夹浏览器来查看子文件夹中的一堆图像。基本上,给定路径,它会查找文件夹并为您提供一个按钮来展开文件夹并显示其中的图像。
下面是我整理的代码。但是,如果List
单元格是在屏幕外绘制的,则Button
一旦滚动到视图中就不会出现。任何人都可以复制这个吗?我如何解决它?它只是 SwiftUI 中的一个错误吗?
编辑:为清楚起见,这是 macOS Catalyst。
这是使用列表的地方:
List(folderurls, id: \.self) { url in
ListImageViewer(url: url)
}
这是完整的代码ListImageViewer
:
struct ListImageViewer: View {
var url: URL
@State var expanded: Bool = false {
didSet {
if expanded {
self.coordinator.refreshListing(for: self.url)
} else {
self.coordinator.contents = []
}
}
}
@ObservedObject var coordinator = FolderListingCoordinator()
var body: some View {
VStack {
HStack {
Button(action: {
self.expanded.toggle()
}) { Text(self.expanded ? "Collapse" : "Expand") }
Text("\(url.lastPathComponent)")
}
HStack {
ForEach(coordinator.contents, id: \.self) { url in
ImageView(url: url)
}
Spacer()
}
}
}
}