#ios #arrays #swiftui
#iOS #массивы #swiftui
Вопрос:
Я создаю пошаговое представление для приложения рецептов. Прямо сейчас я использую PageTabViewStyle
where каждый шаг получает свой собственный вид; на данный момент он работает неправильно, потому что каждый шаг (ожидайте первого, см. GIF) возвращается в этот список, и прокрутка влево или вправо невозможна. Кто-нибудь испытывал то же самое? Существует ли ограничение на количество страниц для TabViewStyle?
Мой файл данных:
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())
}
}