【发布时间】:2021-12-02 11:45:00
【问题描述】:
我正在创建一个带有 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正在加载尚不存在的帖子,导致它以 nil 集初始化。 -
@brandonscript 它适用于基本文本,我还可以通过使用 Post 对象手动设置帖子数组来使其工作。谢谢!