From 8da4667919e3636a45ba7375e94ae509142da326 Mon Sep 17 00:00:00 2001 From: "Kim, Raymond" <82295573+garlicvread@users.noreply.github.com> Date: Thu, 11 Aug 2022 20:25:57 +0900 Subject: [PATCH] =?UTF-8?q?Feat:=20Section=203.6.=20Update,=20=EC=95=B1=20?= =?UTF-8?q?=EC=99=84=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Motivation - Section 6 Create a Favorite Button for Each Landmark ### Key Changes -- Section 6 Create a Favorite Button for Each Landmark 예제 코드 및 주석 추가 ### To Reviewers - 샘플 앱 완성 --- .../UserInterfaceState.xcuserstate | Bin 60835 -> 64194 bytes tutorial/Views/Helpers/FavoriteButton.swift | 34 ++++++++++++++++++ tutorial/Views/Landmarks/LandmarkDetail.swift | 16 +++++++-- 3 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 tutorial/Views/Helpers/FavoriteButton.swift diff --git a/tutorial.xcodeproj/project.xcworkspace/xcuserdata/raymondkim.xcuserdatad/UserInterfaceState.xcuserstate b/tutorial.xcodeproj/project.xcworkspace/xcuserdata/raymondkim.xcuserdatad/UserInterfaceState.xcuserstate index 2a4b58250d3533ccb362d718a10683641ce69f20..f68aa93fbdb91575fc70ce6461b147117595cf21 100644 GIT binary patch delta 29530 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 delta 27752 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 diff --git a/tutorial/Views/Helpers/FavoriteButton.swift b/tutorial/Views/Helpers/FavoriteButton.swift new file mode 100644 index 0000000..bc5eb55 --- /dev/null +++ b/tutorial/Views/Helpers/FavoriteButton.swift @@ -0,0 +1,34 @@ +// +// FavoriteButton.swift +// tutorial +// +// Created by 김제필 on 8/11/22. +// + +import SwiftUI + +struct FavoriteButton: View { + // 3.6.2. 버튼의 현재 상태를 저장할 변수 isSet을 선언하고 @Binding 프로퍼티 래퍼를 추가한다. ⬇️ + @Binding var isSet: Bool + + var body: some View { + // 3.6.3. 버튼 생성 -> 기본 형태 지정 + Button { + isSet.toggle() + } label: { + Label("Toggle Favorite", systemImage: isSet ? "star.fill" : "star") + .labelStyle(.iconOnly) + .foregroundColor(isSet ? .yellow : .gray) + } + } +} + +struct FavoriteButton_Previews: PreviewProvider { + static var previews: some View { + // 3.6.2. ⬆️ 변수 isSet을 프리뷰에 추가한다. + FavoriteButton(isSet: .constant(true)) + } +} + + +// 3.6.3. 까지 도달했으면 LandmarkDetail.swift 파일로 이동 diff --git a/tutorial/Views/Landmarks/LandmarkDetail.swift b/tutorial/Views/Landmarks/LandmarkDetail.swift index ea1c206..a945cac 100644 --- a/tutorial/Views/Landmarks/LandmarkDetail.swift +++ b/tutorial/Views/Landmarks/LandmarkDetail.swift @@ -10,6 +10,13 @@ import SwiftUI struct LandmarkDetail: View { + // 3.6.5. computed property landmarkIndex를 생성하여 EnvironmentalObjet 변수인 modelData와 비교한다. + @EnvironmentObject var modelData: ModelData + + var landmarkIndex: Int { + modelData.landmarks.firstIndex(where: { $0.id == landmark.id})! + } + // 2.7.6. Landmark 프로퍼티 추가. 프리뷰 코드로 이동 ⬇️ var landmark: Landmark @@ -32,8 +39,13 @@ struct LandmarkDetail: View { // 1.3.1., 1.3.2. VStack 추가 VStack(alignment: .leading) { // 1.3.5. alignment 옵션 추가 - Text(landmark.name) // 2.7.8. 필요한 데이터 추가 - .font(.title) + // 3.6.6. HStack 내로 landmark.name TextView를 이동하고 옆에 FavoriteButton 추가 + HStack { + Text(landmark.name) // 2.7.8. 필요한 데이터 추가 + .font(.title) + + FavoriteButton(isSet: $modelData.landmarks[landmarkIndex].isFavorite) + } // 1.3.6. HStack 추가 HStack {