Я только что обнаружил забавное поведение. если .id (UUID (). uuidString) , то модификатор List комментируется, когда пользователь изменяет значение привязанного элемента управления, который не виден в начальном представлении (что означает, что элемент управления может быть где-то ближе к концу списка) список будет прокручиваться вверх, поскольку привязанное значение будет обновлять sh представление. Однако, если .id (UUID (). UuidString) , модификатор закомментирован, список не будет прокручиваться вверх, он останется там, где он есть - что хорошо для меня.
Мне просто любопытно, если это ожидаемое поведение. Есть ли что-нибудь, что помешает прокрутке вверх, когда идентификатор указан в списке?
import SwiftUI
struct ScrollUpProblem: View {
@EnvironmentObject var qList: MemoryObjectRep // MemoryObjectRep is a class keeping published parameters.
var body: some View {
NavigationView{
List{
ForEach(self.qList.QuestionList) { question in
ScrollUpProblemDetail(question: self.$qList.QuestionList[self.qList.QuestionList.firstIndex(of: question)!] )
}
}
.id(UUID().uuidString) // <<<<<<<< ATTENTION HERE
}
}
}
struct ScrollUpProblemDetail: View {
@Binding var question: SurveyQuestion
var body: some View {
NavigationLink(destination:QuestionCardDetail(question: $question)){
HStack(spacing: 0){
Text("AnyText")
Spacer()
Toggle(isOn: self.$question.BoolValue)
{
Text("")
}.id(UUID().uuidString)
}
}
}
}