Элемент просмотра вкладок SwiftUI без ограничений

#foreach #swiftui #tabview

Вопрос:

У меня есть 50 вопросов по Firebase. Я возвращаю эти данные с помощью ForEach в представлении вкладки, которое я подготовил как обычай. Но из вопроса 23 я не вижу других вопросов. Я не могу перейти к следующей странице. В чем причина этого ? Могу ли я неограниченно возвращать элементы в TabView?

Gif:

введите описание изображения здесь

Просмотр вкладок просмотр страниц:

 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())
        }
    }
}
 

Tabviewмодификатор:

 struct TabViewModifier: ViewModifier {

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

Ответ №1:

Я решил свою проблему. Я добавил это в ForEach

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