From 707082b3a9afb554edddcede041fc5ec73a2e827 Mon Sep 17 00:00:00 2001 From: Freddy Date: Thu, 28 Sep 2023 18:40:09 -0700 Subject: [PATCH 1/2] Sharing Data Between Structure. --- .../NewTopLevelView.swift | 18 ++++++++++++++++++ .../StudentCourseModels.swift | 8 ++++++++ 2 files changed, 26 insertions(+) create mode 100644 ProIPhone_Ch07_SharingDataBetweenStructures/NewTopLevelView.swift create mode 100644 ProIPhone_Ch07_SharingDataBetweenStructures/StudentCourseModels.swift diff --git a/ProIPhone_Ch07_SharingDataBetweenStructures/NewTopLevelView.swift b/ProIPhone_Ch07_SharingDataBetweenStructures/NewTopLevelView.swift new file mode 100644 index 0000000..f7b0c14 --- /dev/null +++ b/ProIPhone_Ch07_SharingDataBetweenStructures/NewTopLevelView.swift @@ -0,0 +1,18 @@ +// +// NewTopLevelView.swift +// ProIPhone_Ch07_SharingDataBetweenStructures +// +// Created by Student Account on 9/28/23. +// + +import SwiftUI + +struct NewTopLevelView: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +#Preview { + NewTopLevelView() +} diff --git a/ProIPhone_Ch07_SharingDataBetweenStructures/StudentCourseModels.swift b/ProIPhone_Ch07_SharingDataBetweenStructures/StudentCourseModels.swift new file mode 100644 index 0000000..141ba04 --- /dev/null +++ b/ProIPhone_Ch07_SharingDataBetweenStructures/StudentCourseModels.swift @@ -0,0 +1,8 @@ +// +// StudentCourseModels.swift +// ProIPhone_Ch07_SharingDataBetweenStructures +// +// Created by Student Account on 9/28/23. +// + +import Foundation From d6377980418288935f0c9341d123c21def913299 Mon Sep 17 00:00:00 2001 From: Freddy Date: Thu, 28 Sep 2023 18:49:52 -0700 Subject: [PATCH 2/2] new sharing data --- .../project.pbxproj | 8 ++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 39861 bytes .../xcschemes/xcschememanagement.plist | 14 ++++++ .../ContentView.swift | 5 ++ .../NewTopLevelView.swift | 38 ++++++++++++++-- .../StudentCourseModels.swift | 43 ++++++++++++++++++ 6 files changed, 105 insertions(+), 3 deletions(-) create mode 100644 ProIPhone_Ch07_SharingDataBetweenStructures.xcodeproj/project.xcworkspace/xcuserdata/student.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 ProIPhone_Ch07_SharingDataBetweenStructures.xcodeproj/xcuserdata/student.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/ProIPhone_Ch07_SharingDataBetweenStructures.xcodeproj/project.pbxproj b/ProIPhone_Ch07_SharingDataBetweenStructures.xcodeproj/project.pbxproj index cdd65bd..d222408 100644 --- a/ProIPhone_Ch07_SharingDataBetweenStructures.xcodeproj/project.pbxproj +++ b/ProIPhone_Ch07_SharingDataBetweenStructures.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + 3F917B612AC657660075A709 /* NewTopLevelView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F917B602AC657660075A709 /* NewTopLevelView.swift */; }; + 3F917B632AC65CFC0075A709 /* StudentCourseModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F917B622AC65CFC0075A709 /* StudentCourseModels.swift */; }; E4554F8B2AC3E9CA00644AB6 /* ProIPhone_Ch07_SharingDataBetweenStructuresApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4554F8A2AC3E9CA00644AB6 /* ProIPhone_Ch07_SharingDataBetweenStructuresApp.swift */; }; E4554F8D2AC3E9CA00644AB6 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4554F8C2AC3E9CA00644AB6 /* ContentView.swift */; }; E4554F8F2AC3E9CE00644AB6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E4554F8E2AC3E9CE00644AB6 /* Assets.xcassets */; }; @@ -19,6 +21,8 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 3F917B602AC657660075A709 /* NewTopLevelView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewTopLevelView.swift; sourceTree = ""; }; + 3F917B622AC65CFC0075A709 /* StudentCourseModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StudentCourseModels.swift; sourceTree = ""; }; E4554F872AC3E9CA00644AB6 /* ProIPhone_Ch07_SharingDataBetweenStructures.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ProIPhone_Ch07_SharingDataBetweenStructures.app; sourceTree = BUILT_PRODUCTS_DIR; }; E4554F8A2AC3E9CA00644AB6 /* ProIPhone_Ch07_SharingDataBetweenStructuresApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProIPhone_Ch07_SharingDataBetweenStructuresApp.swift; sourceTree = ""; }; E4554F8C2AC3E9CA00644AB6 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; @@ -63,6 +67,8 @@ children = ( E4554F8A2AC3E9CA00644AB6 /* ProIPhone_Ch07_SharingDataBetweenStructuresApp.swift */, E4554F8C2AC3E9CA00644AB6 /* ContentView.swift */, + 3F917B602AC657660075A709 /* NewTopLevelView.swift */, + 3F917B622AC65CFC0075A709 /* StudentCourseModels.swift */, E4554F982AC3EB0C00644AB6 /* RandomBackgroundColor.swift */, E4554F9A2AC3EDD600644AB6 /* StateAndBinding.swift */, E4554F9C2AC3EE8F00644AB6 /* DisplayTextField.swift */, @@ -152,6 +158,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 3F917B612AC657660075A709 /* NewTopLevelView.swift in Sources */, E4554F9D2AC3EE8F00644AB6 /* DisplayTextField.swift in Sources */, E4554F8D2AC3E9CA00644AB6 /* ContentView.swift in Sources */, E4554F8B2AC3E9CA00644AB6 /* ProIPhone_Ch07_SharingDataBetweenStructuresApp.swift in Sources */, @@ -159,6 +166,7 @@ E4554F9B2AC3EDD600644AB6 /* StateAndBinding.swift in Sources */, E4554F9F2AC3FF2C00644AB6 /* StateObjectandObservedObject.swift in Sources */, E4554FA12AC403B000644AB6 /* EnvironmentObjectView.swift in Sources */, + 3F917B632AC65CFC0075A709 /* StudentCourseModels.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/ProIPhone_Ch07_SharingDataBetweenStructures.xcodeproj/project.xcworkspace/xcuserdata/student.xcuserdatad/UserInterfaceState.xcuserstate b/ProIPhone_Ch07_SharingDataBetweenStructures.xcodeproj/project.xcworkspace/xcuserdata/student.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..b0580fe1a279b0b5d04127858ba8d87faa9c8633 GIT binary patch literal 39861 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 + + + + SchemeUserState + + ProIPhone_Ch07_SharingDataBetweenStructures.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/ProIPhone_Ch07_SharingDataBetweenStructures/ContentView.swift b/ProIPhone_Ch07_SharingDataBetweenStructures/ContentView.swift index 47f8271..7a38402 100644 --- a/ProIPhone_Ch07_SharingDataBetweenStructures/ContentView.swift +++ b/ProIPhone_Ch07_SharingDataBetweenStructures/ContentView.swift @@ -30,6 +30,11 @@ struct ContentView: View { .tabItem { Image(systemName: "4.circle") } + // Add your NewTopLevelView as a new tab + NewTopLevelView() + .tabItem { + Image(systemName: "5.circle") + } } .tabViewStyle(DefaultTabViewStyle()) diff --git a/ProIPhone_Ch07_SharingDataBetweenStructures/NewTopLevelView.swift b/ProIPhone_Ch07_SharingDataBetweenStructures/NewTopLevelView.swift index f7b0c14..08b9399 100644 --- a/ProIPhone_Ch07_SharingDataBetweenStructures/NewTopLevelView.swift +++ b/ProIPhone_Ch07_SharingDataBetweenStructures/NewTopLevelView.swift @@ -8,11 +8,43 @@ import SwiftUI struct NewTopLevelView: View { + @State private var isDarkMode = false + @ObservedObject private var student = Student() + @ObservedObject private var course = Course() + + var body: some View { + VStack { + DarkModeToggleView(isDarkMode: $isDarkMode) + + StudentEditorView(student: student) + Text("Student Information:") + Text("First Name: \(student.firstName)") + Text("Last Name: \(student.lastName)") + + Divider() + + CourseEditorView(course: course) + Text("Course Information:") + Text("Year: \(course.year)") + Text("Quarter: \(course.quarter)") + Text("Area: \(course.area)") + Text("Course Number: \(course.courseNumber)") + Text("Course Title: \(course.courseTitle)") + } + } +} + +struct DarkModeToggleView: View { + @Binding var isDarkMode: Bool + var body: some View { - Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + Toggle("Dark Mode", isOn: $isDarkMode) + .padding() } } -#Preview { - NewTopLevelView() +struct NewTopLevelView_Previews: PreviewProvider { + static var previews: some View { + NewTopLevelView() + } } diff --git a/ProIPhone_Ch07_SharingDataBetweenStructures/StudentCourseModels.swift b/ProIPhone_Ch07_SharingDataBetweenStructures/StudentCourseModels.swift index 141ba04..e0a024f 100644 --- a/ProIPhone_Ch07_SharingDataBetweenStructures/StudentCourseModels.swift +++ b/ProIPhone_Ch07_SharingDataBetweenStructures/StudentCourseModels.swift @@ -6,3 +6,46 @@ // import Foundation +import SwiftUI + +class Student: ObservableObject { + @Published var firstName: String = "" + @Published var lastName: String = "" +} + +class Course: ObservableObject { + @Published var year: String = "" + @Published var quarter: String = "" + @Published var area: String = "" + @Published var courseNumber: String = "" + @Published var courseTitle: String = "" +} + +struct StudentEditorView: View { + @ObservedObject var student: Student + + var body: some View { + VStack { + TextField("First Name", text: $student.firstName) + TextField("Last Name", text: $student.lastName) + } + .padding() + } +} + +struct CourseEditorView: View { + @ObservedObject var course: Course + + var body: some View { + VStack { + TextField("Year", text: $course.year) + TextField("Quarter", text: $course.quarter) + TextField("Area", text: $course.area) + TextField("Course Number", text: $course.courseNumber) + TextField("Course Title", text: $course.courseTitle) + } + .padding() + } +} + +