티스토리 뷰
List에서 행의 인덱스가 필요해서 다음과 같이 코드를 작성했다.
struct PrayersView: View {
...
@FetchRequest(
sortDescriptors: [NSSortDescriptor(keyPath: \Prayer.name, ascending: true)],
animation: .default)
private var items: FetchedResults<Prayer>
var body: some View {
List {
ForEach(items.indices, id: \.self) { index in
NavigationLink(destination: {
PrayerDetailView(items: items, startIndex: index)
}, label: {
Text(items[index].getName())
.padding(.vertical)
})
코드만으로는 딜레이가 발생하는 원인을 알 수 없어서 코드를 하나씩 변경해가면서 확인했다.
원인은 ForEach에서 id를 사용해서 발생하는 문제였다.
그래서 인덱스를 구하는 메서드를 만들어서 아래와 같이 코드를 수정하니 잘 작동했다.
var body: some View {
List {
ForEach(items) { item in
NavigationLink(destination: {
PrayerDetailView(items: items, startIndex: getIndex(prayer: item))
}, label: {
Text(item.getName())
.padding(.vertical)
})
'삽질 이야기' 카테고리의 다른 글
[앱 출시] Developer Removed from Sale 대처 방법 (0) | 2023.10.03 |
---|---|
FetchedResults를 SwiftUI의 미리보기에서 사용하는 방법 (0) | 2023.09.04 |
[SwiftUI] if 문으로 뷰를 나타내는 경우에 발생하는 오류 (0) | 2023.08.27 |
[SwiftUI] Form과 TextEditor 삽질 이야기 (0) | 2023.08.25 |
댓글