struct DevTechieCourse: Identifiable, Hashable { let id = UUID() let name: String let details: String }
extension DevTechieCourse { static var exampleData: [DevTechieCourse] { [ .init(name: "Mastering SwiftUI 3", details: "Mastering SwiftUI 3"), .init(name: "DisneyPlus Clone in SwiftUI", details: "DisneyPlus Clone in SwiftUI"), .init(name: "Drawing App in SwiftUI", details: "Drawing App in SwiftUI"), .init(name: "Speech ToDo in UIKit", details: "Speech ToDo in UIKit"), .init(name: "Build Strava Clone in UIKit", details: "Build Strava Clone in UIKit"), .init(name: "Build Music Player", details: "Build Music Player") ] } }
struct ContentView: View { @State private var courses = DevTechieCourse.exampleData @State private var selection: DevTechieCourse? var body: some View { NavigationSplitView { List(courses, selection: $selection) { course in Text(course.name).tag(course) } } detail: { Text(selection?.name ?? "Choose a course") } .navigationSplitViewStyle(.balanced) } }
struct ContentView: View { @State private var courses = DevTechieCourse.exampleData @State private var selection: DevTechieCourse? var body: some View { NavigationSplitView { List(courses, selection: $selection) { course in Text(course.name).tag(course) } .navigationTitle("DevTechie Courses") } detail: { Text(selection?.name ?? "Choose a course") } .navigationSplitViewStyle(.balanced) } }
import SwiftUIstruct ContentView: View { @State private var courses = DevTechieCourse.exampleData @State private var selection: DevTechieCourse? var body: some View { NavigationSplitView { List(courses, selection: $selection) { course in Text(course.name).tag(course) } .navigationTitle("DevTechie Courses") } detail: { Text(selection?.name ?? "Choose a course") } .navigationSplitViewStyle(.balanced) } } struct DevTechieCourse: Identifiable, Hashable { let id = UUID() let name: String let details: String } extension DevTechieCourse { static var exampleData: [DevTechieCourse] { [ .init(name: "Mastering SwiftUI 3", details: "Mastering SwiftUI 3"), .init(name: "DisneyPlus Clone in SwiftUI", details: "DisneyPlus Clone in SwiftUI"), .init(name: "Drawing App in SwiftUI", details: "Drawing App in SwiftUI"), .init(name: "Speech ToDo in UIKit", details: "Speech ToDo in UIKit"), .init(name: "Build Strava Clone in UIKit", details: "Build Strava Clone in UIKit"), .init(name: "Build Music Player", details: "Build Music Player") ] } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }
struct DevTechieCourseByCategory: Identifiable, Hashable { let id = UUID() let name: String let courses: [String] }
extension DevTechieCourseByCategory { static var exampleData: [DevTechieCourseByCategory] { [ .init(name: "SwiftUI", courses: ["Mastering SwiftUI 3", "DisneyPlus Clone in SwiftUI", "Drawing App in SwiftUI"]), .init(name: "UIKit", courses: ["Speech ToDo in UIKit", "Build Strava Clone in UIKit", "Build Music Player"]) ] } }
struct ContentView: View { @State private var categories = DevTechieCourseByCategory.exampleData @State private var selectedCategory: DevTechieCourseByCategory? @State private var selectedCourse: String? var body: some View { NavigationSplitView { List(categories, selection: $selectedCategory) { category in Text(category.name).tag(category) } } content: { List(selectedCategory?.courses ?? [], id: \.self, selection: $selectedCourse) { course in Text(course) } } detail: { Text(selectedCourse ?? "Choose a course") } } }
With that we have reached the end of this article. Thank you once again for reading. Subscribe to our weekly newsletter at https://www.devtechie.com