SwiftUI: прокрутка списка sh вверх - PullRequest
0 голосов
/ 22 января 2020

Я только что обнаружил забавное поведение. если .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)

            }
        }
    }
}

1 Ответ

0 голосов
/ 23 января 2020

id является частью состояния представления. если вы измените его, представление будет воссоздано.

...