PageTabVIewStyle() 使 canvas 预览崩溃

PageTabVIewStyle() crashes the canvas preview

我正在创建一个带有 TabView 的小型 SwiftUI 应用程序,但是在我使用修饰符 .tabViewStyle(PageTabViewStyle()) 后代码立即停止工作。这是为什么?该应用程序旨在循环浏览一系列图像,并且在设计上与照片应用程序相似。它基于 Kavsoft 教程,但该教程使用了已弃用的代码。当我使用更现代的等效项时,应用程序的预览停止工作,我再也看不到 TabView。


struct Home: View {
    
    /* Posts */
    @State var posts: [Post] = []
    
    /* Cuurent Image */
    @State var currentImage = ""
    
    var body: some View {
        
        /* Gallery */
        TabView(selection: $currentImage) {
            ForEach(posts) { post in
                /* GeometryReader to get screen sizes for image */
                GeometryReader { geo in
                    let size = geo.size
                    Image(post.image)
                        .resizable()
                        .aspectRatio(contentMode: .fill)
                        .frame(width: size.width, height: size.height)
                        .cornerRadius(0)
                }
                .edgesIgnoringSafeArea(.all)
            }
        }
        .tabViewStyle(PageTabViewStyle()) // Cannot work
        .onAppear {
            for index in 1...10 {
                posts.append(Post(image: "\(index)"))
            }
        }
    }
}


struct Post: Identifiable, Hashable {
    var id = UUID().uuidString
    var image: String
}

为了完整起见在这里添加一个答案,我怀疑它适用于像 Text() 这样的静态内容。这是崩溃,因为 ForEach 正在尝试加载尚不存在的帖子,导致它从空数组初始化。要使选项卡视图正常工作,至少需要一个渲染视图。

要解决此问题,posts 中至少需要有一个元素才能呈现。