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/...
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...
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")
...
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...
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...
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...
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...
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...
631 post articles, 79 pages.