SwiftUI의 리스트와 섹션에 대해서 공부해보자:)
dqQQQ
·2023. 11. 29. 15:20
개요
여러개를 표현할 때 사용하는 리스트에 대해서 알아보겠다.
리스트
하나의 열에 여러개를 나열할 때 사용하는 뷰이다.
VStack과 다른 점은 단순히 뷰를 배치하는 것이 아니라 구분선을 통해 리스트 형식으로 표현해준다.
정적 컨텐츠
아래의 예시처럼 원하는 뷰를 전달하면 로우로 담아서 표현한다.
List {
Text("1")
Text("2")
Text("3")
Text("4")
}
동적 컨텐츠
수가 정해진 것이 아니라 언제든지 추가되고 삭제될 수 있는 경우로 이 방법을 많이 사용한다.
Range<Int>
A...B, A... , ...A와 같은 것은 안된다.
List(0..<100) {
Text("\($0)")
}
RandomAccessCollection
데이터의 각 요소들을 구분할 수 있는 id값을 제공해야한다.
id값을 제공하는 방법은 2가지가 있다.
id 식별자 지정
: 직접 인수로 제공하고, id는 self로 명시해준다.identifiable
: 사용자가 정의한 타입을 Identifiable 프로토콜을 채택한다.
//id 식별자 지정
List([1, 2, 3, 4, 5], id : \.self) {...}
//identifiable
struct Animal: Indentifiable {
let id =UUID()
...
}
List([Animal(name: "mungmung"), Animal(name: "miyao")]) { ... }
동적과 정적의 조합
ForEach
를 사용하면 된다.
ForEach
는 리스트처럼 데이터를 받아서 동적으로 뷰를 생성하는 역할을 한다.
아래의 두 코드는 같다.
List(0..<50) {
Text("\($0)")
}
List {
ForEach(0..<50) {
Text("\($0)")
}
}
그러므로 일반 리스트로 선언하고 정적 데이터, 동적 데이터를 원하는대로 써주면 된다.
List {
Text("num")
ForEach(0..<50) {
Text("\($0)")
}
}
섹션
리스트는 섹션으로 이용해 데이터를 그룹화 할 수 있다.
struct Section<Parent, Content, Footer> { }
ListStyle
DefaultListStyle
: 리스트 기본 스타일PlainListStyle
: 데이터 목록을 각 행마다 하나씩 나열하는 형태의 기본 스타일GroupedListStyle
: 섹션을 분리된 그룹으로 묶어서 표현한다. 환경에 따라 grouped와 insetGrouped중에 선택된다.
Form
Form { ... }
형태로 사용하며 iOS 기준 List { ... }.listStyle(GroupedListStyle())
과 같다.
Form의 특징은 각 운영체제에 따라서 리스트를 적용해준다는 것이다.
'SwiftUI' 카테고리의 다른 글
SwiftUI의 MVVM에 대해 공부해보자:) (0) | 2023.11.29 |
---|---|
SwiftUI의 네비게이션 뷰에 대해서 공부해보자:) (0) | 2023.11.29 |
SwiftUI의 버튼에 대해서 공부해보자:) (0) | 2023.11.29 |
SwiftUI의 스택에 대해서 공부해보자:) (0) | 2023.11.29 |
SwiftUI의 텍스트와 이미지에 대해서 공부해보자:) (0) | 2023.11.29 |