- 코드만으로 로그인 화면 UI 만들기(NSLayoutConstraint로 정리)
- 텍스트필드 동작 감지 UI 변경(addTarget)
- selector, @objc 어노테이션, UITextFieldDelegate extension
- UIAlertController로 alert창 띄우기
- 새로운 scene 객체가 앱에 추가될 때마다 호출되는 SceneDelegate의 willConnectTo
![Simulator Screenshot - iPhone 15 Pro - 2024-01-14 at 00 25 18](https://private-user-images.githubusercontent.com/106448279/296499992-dcc0715f-143b-4ec2-972e-fbd5f5a0119b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ4NDQxNjcsIm5iZiI6MTcyNDg0Mzg2NywicGF0aCI6Ii8xMDY0NDgyNzkvMjk2NDk5OTkyLWRjYzA3MTVmLTE0M2ItNGVjMi05NzJlLWZiZDVmNWEwMTE5Yi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgyOFQxMTE3NDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1mOWZhMDAyYTMwMWM5YjkzYjNmMzJkZGQ1YWVlNGIyZmZkY2I0MmQ5MDZmZjU0NWRiNzM5YWFjYzUwMjMwN2ZkJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.b6k_okV43oPJ_-KrGsSp-wlozbbySfUU3HgU2x2bdMA)
![Simulator Screenshot - iPhone 15 Pro - 2024-01-14 at 00 25 42](https://private-user-images.githubusercontent.com/106448279/296500011-5823a3b3-7943-4f81-b023-7d1e711da93e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ4NDQxNjcsIm5iZiI6MTcyNDg0Mzg2NywicGF0aCI6Ii8xMDY0NDgyNzkvMjk2NTAwMDExLTU4MjNhM2IzLTc5NDMtNGY4MS1iMDIzLTdkMWU3MTFkYTkzZS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgyOFQxMTE3NDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0zNWQ0MGRkYjNlN2Q5MjJhNzBhOTY4YmZkOWM4OTVhYWM5NTI5OGZlMzE1NzJhMDQ2MTY5MDQ1NDM4YjdjZmVhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.IlZ43RDwHBLMGeg3P_pR8b1ZxRAEV77eJ5QhIYRSJnw)
- UIStackView를 활용한 레이아웃 구성
- 텍스트필드 동작 감지 UI 변경(addTarget)
- UITextFieldDelegate 프로토콜을 활용하여 텍스트 필드의 행동(키보드 return) 관리
- BMI 계산 및 결과 화면 전환:사용자가 입력한 키와 몸무게 값을 바탕으로 BMI를 계산하고, 그 결과를 다른 뷰 컨트롤러(ResultViewController)에 전달하여 결과를 표시
![Simulator Screenshot - iPhone 15 Pro - 2024-01-14 at 00 21 33](https://private-user-images.githubusercontent.com/106448279/296499791-fb775b79-bcc5-49f4-97eb-f5a0b817bf01.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ4NDQxNjcsIm5iZiI6MTcyNDg0Mzg2NywicGF0aCI6Ii8xMDY0NDgyNzkvMjk2NDk5NzkxLWZiNzc1Yjc5LWJjYzUtNDlmNC05N2ViLWY1YTBiODE3YmYwMS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgyOFQxMTE3NDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0zN2RkYjJmMTA3Y2E4ODI4OGM1NDBmYWJkMzliYzFiMDA0ZjQ1MDgxZDU1ZjI4ODJlZmYxNDcwYzAzNjU4NTkzJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.6HPdZGKnM_V8vFY7G1vCRYeG0rYbBm7W1TRYm6L6Fz8)
![Simulator Screenshot - iPhone 15 Pro - 2024-01-14 at 00 22 30](https://private-user-images.githubusercontent.com/106448279/296499837-cdc74b87-f1b8-4709-bae5-6aa362d6ca25.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ4NDQxNjcsIm5iZiI6MTcyNDg0Mzg2NywicGF0aCI6Ii8xMDY0NDgyNzkvMjk2NDk5ODM3LWNkYzc0Yjg3LWYxYjgtNDcwOS1iYWU1LTZhYTM2MmQ2Y2EyNS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgyOFQxMTE3NDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1iOTRhOGI4YmY1MTQwNDlhNWVlMjVjNDVlYjBlMmRkODhiMmNiMDI3ZjM1ZDY3ZDg3OWQzMjY1OWFkZWVlYjA3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.xvdVKOeyTP42rreNJzwNUiRmGyKQ8GepUvcYYhF0Qn0)
- SwiftUI 입문 With fastcampus😀
- VStack, HStack, Image, Button등의 기본 구성 요소들을 활용하며 레이아웃 그리기 연습
![Simulator Screenshot - iPhone 15 Pro - 2024-01-14 at 00 21 33](https://private-user-images.githubusercontent.com/106448279/296499641-d3c68ac2-160b-4c21-bee3-8158ca47ac16.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ4NDQxNjcsIm5iZiI6MTcyNDg0Mzg2NywicGF0aCI6Ii8xMDY0NDgyNzkvMjk2NDk5NjQxLWQzYzY4YWMyLTE2MGItNGMyMS1iZWUzLTgxNThjYTQ3YWMxNi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgyOFQxMTE3NDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kNjZjZGVjNzQ3MDVmNDAzMjIzOTQ5Yzg1NzhkYjZkOTA4NTk2ZDg4YmIzN2VjMmNhZDY3OGY3NjI2ZjJkNWJlJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.fLHlqIORhDDuFYDBTPMPZimFW7Vn_MTmmKvssYruMJw)
![Simulator Screenshot - iPhone 15 Pro - 2024-01-14 at 00 22 30](https://private-user-images.githubusercontent.com/106448279/296499658-6d837fe4-7bf8-4e7e-a108-5b69ed5f6d65.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ4NDQxNjcsIm5iZiI6MTcyNDg0Mzg2NywicGF0aCI6Ii8xMDY0NDgyNzkvMjk2NDk5NjU4LTZkODM3ZmU0LTdiZjgtNGU3ZS1hMTA4LTViNjllZDVmNmQ2NS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgyOFQxMTE3NDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0xNWUzYmM1NWVjZjhlZTFmMzk4OGEzZTQxMGYxZmQxYzEyYzRjOTkyMWQ4NTk5MWMwYjIxNjk5OWU4YTVhMGM0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.3xqpb8NpaexlEfjq-OS6hLFPRfRjpXCzTFdoCl-2v7Y)
- ListView를 통해 적용하는 데이터 모델링
- ⭐️Hashable, NavigationStack, List, ForEach, Section⭐️
- ⭐️@State와 Binding 데이터의 상태를 나타내는 State, State에 $를 붙이면 Binding
- (두 State가 연결되어있을때 = 바인딩되어 있을때) 화면 재빌드!
![Simulator Screenshot - iPhone 15 Pro - 2024-01-14 at 00 21 33](https://private-user-images.githubusercontent.com/106448279/296511771-99244a77-12b6-4387-9fbe-446ecdfbfeb5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ4NDQxNjcsIm5iZiI6MTcyNDg0Mzg2NywicGF0aCI6Ii8xMDY0NDgyNzkvMjk2NTExNzcxLTk5MjQ0YTc3LTEyYjYtNDM4Ny05ZmJlLTQ0NmVjZGZiZmViNS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgyOFQxMTE3NDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT02YTYxNWMwYWEzOGRkNTczYTQ4NjgzMmUzZmZlNjNjOTczYzg3NmVlZTZiMDQxMmQzZDVjYjgxZmQ3NzgxMjllJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.ydYq0GszRAcUngdLteBVD2OuSOuW6WaQWNAK65xPrPA)
![Simulator Screenshot - iPhone 15 Pro - 2024-01-14 at 00 22 30](https://private-user-images.githubusercontent.com/106448279/296511777-5acf2657-1b0b-49f1-9de8-c1baed5fc45c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ4NDQxNjcsIm5iZiI6MTcyNDg0Mzg2NywicGF0aCI6Ii8xMDY0NDgyNzkvMjk2NTExNzc3LTVhY2YyNjU3LTFiMGItNDlmMS05ZGU4LWMxYmFlZDVmYzQ1Yy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgyOFQxMTE3NDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kOWVmYzEzNGUyMmI1YWEyNWMxMDJmN2UwY2RlOTQxM2M2MTYzNTI5OGRjMzNjZmUwZjZkZDM0Y2M5MzQwNzQzJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.2q8Ypc6_03oybH8apc8fzHGYHPXKEAriHMEq84Cfc40)
- @Binding, @State, Button.sheet(isPresented: $showModal)
- 키워드는 NavaigationStack(위에 쌓인다), NavigationLink로 이동
- toolbar-ToolBarItem을 통한 이동
- 다양한 내용이 하나의 앱에 들어가야 할 때 화면을 구상후 탭을 나눈다(one 탭 = one 화면)
- TabView{ View1.badge(1). tabItem{}}.tabViewStyle
- View와 ViewController
- 오토레이아웃
- TableView(Delegate, Datasource)
- NavigationController, Segue(아직 흡수X)
![Simulator Screenshot - iPhone 15 Pro - 2024-01-14 at 00 21 33](https://private-user-images.githubusercontent.com/106448279/296852150-8d69742a-b7c2-4d3a-b1b1-e48976e1c4f9.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ4NDQxNjcsIm5iZiI6MTcyNDg0Mzg2NywicGF0aCI6Ii8xMDY0NDgyNzkvMjk2ODUyMTUwLThkNjk3NDJhLWI3YzItNGQzYS1iMWIxLWU0ODk3NmUxYzRmOS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgyOFQxMTE3NDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1mOTNjMGNjNjlkZWY5YTA3Yzc1Yjc3Y2IyMjNmNDgyM2ViOTM4MTA1OWY5YTM4YmNkMzE0YjA2YWUxZGNhOTFjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.kGChWEe1t1evrhNourvKx97NKLZ0C7N6Pi8jY9RkqMw)
- VoiceMemo App clone with SwiftUI
- PropertyWrappers가 MVVM에서 어떻게, 왜 쓰이는지
- Onboarding 구현을 통한 UI, Property Wrappers, NavigationStack
- 나머지는 PropertyWrappers.md 참고
- To do list 구현하기
- DatePicker를 통한 date, time calendar 설정(graphical 예쁘다)
- alert(@State-Binding, 삭제/취소)
- @EnvironmentObject를 포함한 property Wrapper 사용 적응하기
- Components? components.md 참고