mirror of
https://github.com/ivanvorobei/SwiftUI.git
synced 2026-02-23 07:54:53 +01:00
68 lines
1.8 KiB
Swift
Executable File
68 lines
1.8 KiB
Swift
Executable File
/*
|
||
See LICENSE folder for this sample’s licensing information.
|
||
|
||
Abstract:
|
||
A view showing featured landmarks above a list of all of the landmarks.
|
||
*/
|
||
|
||
import SwiftUI
|
||
|
||
struct CategoryHome: View {
|
||
var categories: [String: [Landmark]] {
|
||
.init(
|
||
grouping: landmarkData,
|
||
by: { $0.category.rawValue }
|
||
)
|
||
}
|
||
|
||
var featured: [Landmark] {
|
||
landmarkData.filter { $0.isFeatured }
|
||
}
|
||
|
||
var body: some View {
|
||
NavigationView {
|
||
List {
|
||
FeaturedLandmarks(landmarks: featured)
|
||
.scaledToFill()
|
||
.frame(height: 200)
|
||
.clipped()
|
||
.listRowInsets(EdgeInsets())
|
||
|
||
ForEach(categories.keys.sorted().identified(by: \.self)) { key in
|
||
CategoryRow(categoryName: key, items: self.categories[key]!)
|
||
}
|
||
.listRowInsets(EdgeInsets())
|
||
|
||
NavigationButton(destination: LandmarkList()) {
|
||
Text("See All")
|
||
}
|
||
}
|
||
.navigationBarTitle(Text("Featured"))
|
||
.navigationBarItems(trailing:
|
||
PresentationButton(
|
||
Image(systemName: "person.crop.circle")
|
||
.imageScale(.large)
|
||
.accessibility(label: Text("User Profile"))
|
||
.padding(),
|
||
destination: ProfileHost()
|
||
)
|
||
)
|
||
}
|
||
}
|
||
}
|
||
|
||
struct FeaturedLandmarks: View {
|
||
var landmarks: [Landmark]
|
||
var body: some View {
|
||
landmarks[0].image(forSize: 250).resizable()
|
||
}
|
||
}
|
||
|
||
#if DEBUG
|
||
struct CategoryHome_Previews: PreviewProvider {
|
||
static var previews: some View {
|
||
CategoryHome()
|
||
}
|
||
}
|
||
#endif
|