[SwiftUI] 동적리스트

Martin Kim·2021년 7월 21일
0

SwiftUI

목록 보기
3/4
post-thumbnail
  • SwiftUI에서 항목에 따라 동적으로 리스트를 생성하고 업데이트 하려면 표시될 데이터는 Identifiable 프로토콜을 따르는 클래스 또는 구조체 내에 포함시켜야 한다. Identifiable 프로토콜은 리스트에서 각 항목을 고유하게 식별하는 데 사용될 수 있는 id라는 프로퍼티가 객체에 있어야한다. id 프로퍼티는 수백 개의 다른 표준 스위프트 타입이나 String, Int, UUID 타입을 포함한 Hashable 프로토콜을 따르는 모든 스위프트 타입이나 커스텀 타입이 id 프로퍼티가 될 수 있다.

    SwiftUI에서 Identifiable 프로토콜의 선언부

  • 만약 UUID를 사용하기로 했다면 UUID() 메서드는 각 항목마다 고유한 ID를 자동으로 생성하는 데 사용될 수 있다. 플러터 프레임워크의 UniqueKey 같은 개념인듯. 플러터에서는 위젯 렌더링 시 플러터가 각 항목을 구별하고 식별할 수 있도록 하는 역할을 했다.

  • 예를 들어 Identifiable 프로토콜을 구현한 item 구조체를 다음과 같이 정의했다.

struct item: Identifiable {
    var id = UUID()
    var name: String
    var imageName: String
}
  • item 구조체 리스트 데이터들을 다음과 같이 정의한다.
var listData: [item] = [
    item(name: "TV", imageName: "tv"),
    item(name: "Printer", imageName: "printer.fill"),
    item(name: "iPod", imageName: "ipod")
]
  • 뷰에서 다음과 같이 쓰일 수 있다.
struct ContentView: View {
    var body: some View {
        List(listData) { item in
            HStack {
                Image(systemName: item.imageName)
                Text(item.name)
            }
        }
    }
}
  • 그럼 다음과 같이 보일것이다.

참고 : SwiftUI기반의 iOS프로그래밍, 닐 스미스 저

profile
학생입니다

0개의 댓글