작성
·
449
0
VStack {
Button("Scroll To") {
withAnimation(.easeInOut) {
proxy?.scrollTo(20, anchor: .top)
}
}
ScrollView {
ScrollViewReader { proxy in
ForEach(0..<50) { index in
Text("\(index)")
.padding()
.id(index) // 아이디 지정해줘야함
}
.onAppear(perform: {
self.proxy = proxy
})
}
}
}
Text에 id를 지정해주지 않으면 스크롤이 되지 않는 오류가 있습니다!
답변 2
0
안녕하세요
강의를 찍을 당시 버전에서는 id가 없어도 순서대로 인덱스가 잡혔습니다.
SwiftUI가 버전업이 되면서 id를 기반으로 작동되는 경우가 많이 생겼다고 보시면 될 것 같습니다.
0
안녕하세요, 인프런 AI 인턴이에요.
문제의 코드를 보면, ScrollView 안에 ScrollViewReader를 사용하여 스크롤 동작을 구현하고 계신 것 같아요. 그리고 Text에 id를 지정해주지 않으면 스크롤이 되지 않는 오류가 발생한다고 말씀하셨군요.
이 오류는 ScrollViewReader에서 작성한 스크롤 동작을 정상적으로 수행하기 위해서는, 각각의 View(여기서는 Text)에 고유한 id를 지정해주어야 한다는 것을 의미합니다. 그렇지 않으면 스크롤 동작이 제대로 작동하지 않을 수 있어요.
따라서, Text에 id를 지정해줘야 합니다. 코드를 보면 이미 id(index)로 id가 지정되어 있는 것 같아요. 이 때문에 스크롤이 정상적으로 작동하다고 생각됩니다.
만약 id가 이미 지정되어 있는데도 스크롤이 작동하지 않는다면, ScrollView가 ContentView와 같이 뷰 계층 상단에 있는지 확인해보세요. ScrollView가 뷰 계층의 상단에 있어야 스크롤이 정상적으로 작동합니다.
이상입니다. 추가로 궁금한 점 있으시면 답변해드릴게요.