HeeJaeEun / SwiftUI

0 stars 0 forks source link

6. Composing Complex Interfaces #6

Open ddosang opened 1 year ago

ddosang commented 1 year ago

https://developer.apple.com/tutorials/swiftui/composing-complex-interfaces

ddosang commented 1 year ago

지금까지 만든 것

랜드마크 리스트 > 상세 화면 (favorite 을 찍을 수 있고, favorite 여부에 따라 filtering 해서 볼 수 있음) 뭔가 멋진 마크 고도, 심박수 그래프 애니메이션

이 챕터에서 만든 것

landmark 를 category 에 따라 분류해서 봄 그것을 하기 위해 struct 에 category 를 추가하고, Dictionary 로 만들어서 사용 (이 문법 익혀둘것)

Categories 폴더에 뷰들도 만들었지만 이건 어렵지 않았으므로 패쓰.

// Landmark.swift
var category: Category
 enum Category: String, CaseIterable, Codable {
    case lakes = "Lakes"
    case rivers = "Rivers"
    case mountaions = "Mountains"
}

// ModelData.swift
var categories: [String: [Landmark]] {
    Dictionary(grouping: landmarks, by: { $0.category.rawValue })
}

isFeatured 라는 변수를 Landmark 에 추가하고 features 배열을 ModelData 에 추가하여 featured 인 것을 리스트 맨 위에 보여줄 수 있도록.

그리고 ContentView 에서 하단 탭바를 엄청 쉽게 만들었다.

@State private var selection: Tab = .featured

enum Tab {
    case featured
    case list
}

var body: some View {
    TabView(selection: $selection) {
        CategoryHome()
            .tabItem {
                Label("Featured", systemImage: "star")
            }
            .tag(Tab.featured)

        LandmarkList()
            .tabItem {
                Label("List", systemImage: "list.bullet")
            }
            .tag(Tab.list)
    }

}