#ios #swift #swiftui #swiftui-form
#iOS #swift #swiftui #swiftui-форма
Вопрос:
у меня есть форма в SwiftUI NavigationView. В форме нет специальных элементов, кроме стандартных: текстовое поле, указатель даты и несколько кнопок
я хотел бы программно прокрутить до определенного элемента. как я могу это сделать?
ScrollViewReader, похоже, не работает с формами.
ScrollViewReader { p in
Form {
....
Button(action: {
p.scrollTo(150)
}) {
Text(self.label)
}
}
Комментарии:
1. Не могли бы вы подготовить минимальный воспроизводимый пример? Это работает, в вашем коде могут быть некоторые нюансы. Они
id
должны присутствовать, быть уникальными и соответствовать тому, к чему вы прокручиваете.2. точно, идентификатор отсутствовал, я думал, что scroll to — это позиция
Ответ №1:
Дайте идентификатор каждому элементу и передайте этот идентификатор .scrollTo(id)
методу. Вот так
struct ContentView: View {
var body: some View {
ScrollViewReader { p in
Form {
Button(action: {
}) {
Text("Top")
}.id(150)
ForEach(0..<30) { index in
Text("(index)")
.id(index)
}
Button(action: {
p.scrollTo(150)
}) {
Text("Scroll")
}
}
}
}
}
Комментарии:
1. я думаю, что ScrollViewReader должен находиться внутри формы, но тогда все элементы ведут себя так, как будто они не в форме
2. Я тестировал с Xcode 12.1 iOS 14.1. с какими проблемами вы сталкиваетесь?
3. да, это работает, извините, я ввел идентификатор не в тот элемент