微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SwiftUI 无限 TabView 项

如何解决SwiftUI 无限 TabView 项

我收到了关于 Firebase 的 50 个问题。我在准备自定义的 TabView 中使用 ForEach 返回此数据。但是从问题23,我看不到其他问题。我无法前进到下一页。这是什么原因?我不能无限制地返回 TabView 中的项目吗?

GIF:

enter image description here

TabView PagingView:

struct PagingQuestionView: View {
    var tests: [Test] = []
    @State var imageUrl: String = ""
    var storage = Storage.storage().reference()
    @Observedobject var pagingQuestionoptionConfigure: PagingQuestionoptionConfigure = PagingQuestionoptionConfigure()
    var body: some View {
        GeometryReader { proxy in
            TabView(selection: $pagingQuestionoptionConfigure.pageIndex) {
                ForEach(tests,id: \.self) { item in
                    vstack(spacing: 20) {
                        EmptyView()
                            .frame(width: 350,height: 250)
                            .padding()
                        vstack {
                            Text("\(item.id))")
                            Text("\(item.question)")
                                .padding()
                        }
                        PagingOptionView(options: item.sections)
                    }
                    .tag(item.id)

                }
                .rotationEffect(.degrees(-90))
                .frame(width: proxy.size.width,height: proxy.size.height)
            }
            .frame(width: proxy.size.height,height: proxy.size.width)
            .rotationEffect(.degrees(90),anchor: .topLeading)
            .offset(x: proxy.size.width)
            .modifier(TabViewModifier())
        }
    }
}

TabViewModifier:

struct TabViewModifier: ViewModifier {

    @viewbuilder
    func body(content: Content) -> some View {
        if #available(iOS 14.0,*) {
            content
                .tabViewStyle(PageTabViewStyle(indexdisplayMode: .never))
                
        } else {
            content
        }
    }
}

解决方法

我解决了我的问题。 我在 ForEach 中添加了这个

ForEach(tests.indices,id: \.self){ ... }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。