[TIL][iOS] LazyVGrid api 정보 호출 문제

Captainjack·2022년 4월 8일
0

TIL

목록 보기
146/258

Lazy는 기본적으로 바로 호출이 되지 않고

특정 처리 이후에 view에 표시된다.

그래서 메인에 바로 원하는 데이터가 호출이 되지 않아서


struct GridStack<Content: View>: View {
    let rows: Int
    let columns: Int
    let content: (Int, Int) -> Content

    var body: some View {
        VStack {
            ForEach(0 ..< rows, id: \.self) { row in
                HStack {
                    ForEach(0 ..< columns, id: \.self) { column in
                        content(row, column)
                    }
                }
            }
        }
    }

    init(rows: Int, columns: Int, @ViewBuilder content: @escaping (Int, Int) -> Content) {
        self.rows = rows
        self.columns = columns
        self.content = content
    }
}

따로 그리드 형태를 선언해서 가져다 쓰기로 했다.

GridStack(rows: Int(ceil(Double(self.arr_list.count / 3))) + 1, columns: 3) { row, col in
	if(self.arr_list.count > row * 3 + col) {
    	ZStack {
        	WebImage(url: URL(string: self.arr_list[row * 3  + col].gif))
            	.resizable()
                .frame(height: 120)
                .padding(3)
            WebImage(url: URL(string: self.arr_list[row * 3  + col].img))
            	.resizable()
                .frame(width: 45, height: 45)
                .padding(EdgeInsets(top: -60, leading: -57, bottom: 0, trailing: 0))
                }
    } else {
    	Image(systemName: "")
        	.resizable()
            .frame(height: 120)
            .padding(3)
            }
    }

index range of 에러 때문에 애좀 먹었던 문제
변수명 잘 확인해야겠다.


출처

https://www.hackingwithswift.com/quick-start/swiftui/how-to-position-views-in-a-grid-using-lazyvgrid-and-lazyhgrid

profile
til' CTF WIN

0개의 댓글