티스토리 뷰

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)
                })

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함