PageTabViewStyle отображает список, а не карусель

#ios #arrays #swiftui

#iOS #массивы #swiftui

Вопрос:

Я создаю пошаговое представление для приложения рецептов. Прямо сейчас я использую PageTabViewStyle where каждый шаг получает свой собственный вид; на данный момент он работает неправильно, потому что каждый шаг (ожидайте первого, см. GIF) возвращается в этот список, и прокрутка влево или вправо невозможна. Кто-нибудь испытывал то же самое? Существует ли ограничение на количество страниц для TabViewStyle?

CurrentUIGIF

Мой файл данных:

 struct Recipe: Identifiable {
    var id = UUID()
    var directions: [String]
}

let recipesData: [Recipe] = [
    Recipe(
        directions: [
            "Gather all ingredients on your countertop. Peas, onions, mineral water, walnuts, almond   butter, olive oil, parsley and mint.",
            "Make the pesto by washing the parsley and mint. Remove the leaves from the stems and set aside.",
            "Peel the two onions and roughly chop them.",
        ]
    )
]
 

Мой вид pageTabView:

 struct DirectionsView: View {
    var recipe: Recipe

    var body: some View {
        TabView {
            ForEach(recipe.directions, id: .self) { item in
                VStack(alignment: .leading) {
                    Text(item)
                }
            }.tabViewStyle(PageTabViewStyle())
        }
    }
}

struct DirectionsView_Previews: PreviewProvider {
    static var previews: some View {
        DirectionsView(recipe: recipesData[0])
    }
}
 

Комментарии:

1. Наличие 2 секунд может привести к сбоям. NavigationView Единственный способ помочь вам — это предоставить минимальный, воспроизводимый продукт. Что-то, что мы можем скопировать и вставить и увидеть код для этого поведения.

2. @loremipsum благодарю вас за рекомендацию. Я отредактировал код, чтобы его было легко воспроизвести. В этом новом минималистичном продукте отсутствует NavigationView, и ошибка все еще появляется.

Ответ №1:

Вам нужно прикрепить .tabViewStyle(PageTabViewStyle()) к TabView (вместо ForEach ):

 struct DirectionsView: View {
    var recipe: Recipe

    var body: some View {
        TabView {
            ForEach(recipe.directions, id: .self) { item in
                VStack(alignment: .leading) {
                    Text(item)
                }
            }
        }
        .tabViewStyle(PageTabViewStyle())
    }
}