apple/SwiftUI, Combine

SwiftUI List (UITableView, UICollectionView)

lgvv 2022. 5. 18. 16:24

SwiftUI List (UITableView, UICollectionView)

 

SwiftUI에서는 UIKit과 달리 리스트를 구성하는게 매우 심플하다.

아직까지 UIKit을 주로 사용하고 있어서 그런지 너무 단순한게 오히려 낯설어서 어렵게 느껴진다.

SwiftUI 처음 공부하면 skimming을 진행해보자.

 

애플 공식문서 링크로 학습 진행.

 

List를 서비스에 도입하기 전에 고려할 몇가지 부분.

  • 아직까지 UIKit의 RefreshControl이 SwiftUI에서 커스텀하기가 조금 어려운데, 이게 가능한지 확인이 필요하다.
  • RefreshControl이 버그가 있다는 StackOverflow의 글이 많은데 반드시 확인하자.
  • 성능! prefetch는 어떻게 처리할 수 있을지가 고민이다
    • swift concurrency를 통해 처리하면 굳이 복잡하게 생각할 필요가 없을거 같은데, GCD 보다는 아직까지 많이 어렵다.
  • 커스텀 UI 어떻게 할지..
    • 트위터 클론코딩이 개인적으로 리스트 레이아웃 커스텀으로는 매우 좋은데 SwiftUI List도 가능성 확인하기.

 

 

단순한 리스트 샘플 코드

리스트를 활용해서 단순하게 만들어보자.

struct Ocean: Identifiable, Hashable {
    let name: String
    let id = UUID()
}

private var oceans = [
    Ocean(name: "Pacific"),
    Ocean(name: "Atlantic"),
    Ocean(name: "Indian"),
    Ocean(name: "Southern"),
    Ocean(name: "Arctic")
]

struct MyOceanView: View {
    
    @State private var multiSelection = Set<UUID>()
    
    var body: some View {
        NavigationView {
            List(oceans, selection: $multiSelection) {
                Text($0.name)
            }
            .navigationTitle("Oceans")
            .toolbar { EditButton() }
        }
        Text("\(multiSelection.count) selections")
    }
}

 

 

 

 

(링크)

https://developer.apple.com/documentation/swiftui/list