Home

To Do List (3)

CellView 적용하기 List(todoLists, id: \.self) { list in CellView(isOn: list.isCompleted, title: list.title) } MainView에서 List에 다음과 같이 CellView를 적용시켜준다. Toggle 버튼 클릭시 적용하기. On/Off에 따라 AttributedText가 적용되게 해보자. SwiftUI에서는 Text에 바로 stirkethrough Modifier가 있다. isOn이 toggle에 따라 true/...

Read more

To Do List (2)

1. Lv 2. Todo 추가 및 완료기능 구현하기 추가기능 구현 우선 추가기능을 구현하려면 Alert를 만들어야 한다. 블로그를 참고하여 만들었다. struct MainView: View { @State private var showing = false @State private var title = "" var body: some View { NavigationStack{ VStack { List { Text("test") Text("tes...

Read more

To Do List (1)

이전에 사용하던 UIKit이 아닌 SwiftUI를 사용하여 ToDoList를 만들어 본다. 이전에 내배캠에서 하던 양식을 그대로 해서 만들어보려고 한다. LV 1. ToDoList 화면 만들기 1. 디자인 NavigationBar 추가 우선 추가하기 버튼이 있는곳은 NavigationBar를 사용하여 만들 예정이다. 우선 NavigationBar를 먼저 만들어 본다. struct ContentView: View { var body: some View { NavigationStack{ VStack { Text("Test") ...

Read more

Build the unofficial Udemy Home Screen (9)

APIResponse를 UIModel에 파싱하기 이전에는 Json으로 데이터를 가져오지 않았기에 let uiModel = HomeUIModel(sectionModels: [ .init(section:.mainBanner(id: "123"), body: [ 이렇게 ViewDidLoad에 값을 넣어 주었는데, 이젠 JSON에 값이 있기에 JSON을 사용하여 바로 로드를 해보기로 한다. ViewDidLoad에 있던 uiModel에 관한 내용은 모두 날리자. Helper 설정 struct HomeUIModelHelper { typealias SectionModel = HomeUIM...

Read more

Build the unofficial Udemy Home Screen (8)

FileManager Extension 구성하기 extension FileManager { static func modelFromJSON<T: Decodable>(fileName: String) -> T? { guard let path = Bundle.main.path(forResource: fileName, ofType: "json") else { print(">>> Path not found") return nil } do { let...

Read more

Build the unofficial Udemy Home Screen (7)

Tap 이벤트를 VC로 전달하기 Combine의 EventPublisher를 사용하여 할것이다. HomeCollectionView에서 진행한다. enum Event { case itemTapped(HomeUIModel.Item) } private let eventSubject = PassthroughSubject<Event, Never>() var eventPublisher: AnyPublisher<Event, Never> { return eventSubject.eraseToAnyPublisher() } 그리고 cell에도 내용을 바꿔준다. privat...

Read more

Build the unofficial Udemy Home Screen (6)

다른 Course Swimlane을 추가 코드는 생략 이미지로 대체한다. HomeVC에서 내용을 추가, 수정했다. FeaturedCourseView 추가 CourseView의 내용을 가져오되, tag만 지워준다. 그리고 높이만 바꿔주었다. struct FeaturedCourseView: View { let imageLink: String let title: String let author: String let rating: Double let reviewCount: Int let price: Decimal var body: some View...

Read more

Build the unofficial Udemy Home Screen (5)

CategoryTextHeader 추가 .init(section: .textheader(id: "1233332"), body: [ .textHeader(id: "1234fds", text: "Categories", highlightedText: nil) 이렇게 적어주면 Categories가 생긴다. CategoryView 추가 모델링 그전에 먼저 모델링을 해준다. enum Category: String, CaseIterable { case development case business case officeProductivity case healt...

Read more