전체 글 93

[Twitter Clone] Add ViewModel and bind view

🟨 구현 화면  🟨 구현 순서RegisterViewModel 파일 생성로그인에 필요한 프로퍼티, 메서드 생성AuthManager 파일 생성 계정을 생성하는 메서드 생성 RegisterViewController 텍스트필드에 입력하는 값을 RegisterViewModel로 전달하여 계정 생성 및 로그인 🟨 RegisterViewModel.swiftimport Foundationimport Firebaseimport FirebaseAuthCombineSwiftimport Combinefinal class RegisterViewViewModel: ObservableObject { @Published var email: String? @Published var password: St..

Clone App/Twitter 2024.06.05

[Twitter Clone] Add Firebase to App (setup onboarding view controllers)

🟨 구현화면 🟨 구현 순서console.firebase.google.com 에 들어가서 새 프로젝트 추가HomeViewController.swift 내에 온보딩 뷰가 나오게 설정OnboardingViewController.swift 파일 생성 (회원가입)RegisterViewController.swift 파일 생성 (아이디, 비밀번호 입력)  🟨 Firebase 홈페이지에서 새 프로젝트 생성하기 자세한 내용은 타 블로그 참고할 것 https://console.firebase.google.com/u/0/ 로그인 - Google 계정이메일 또는 휴대전화accounts.google.com  🟨 HomeViewController.swift HomeView가 로드되자마자 온보딩 뷰가 나오게 설정overri..

Clone App/Twitter 2024.06.04

ObservableObject와 @Published

개체가 변경되기 전에 내보내는 게시자가 있는 개체 형식이다.?  @Published와 ObservableObject는 스위프트의 Combine 프레임워크에서 사용되는 속성 래퍼와 프로토콜이다.  ✅ 주로 SwiftUI와 함꼐 사용되어 상태 관리를 쉽게 하고, 데이터 변경 시 UI가 자동으로 업데이트 되도록 한다.   🟥 @Published ObservableObject에 속하는 프로퍼티가 변경될 때마다 자동으로 변경 사항을 알리는 역할을 한다. 이를 통해, 프로퍼티를 구독(Subscribe)하고 있는 UI 컴포넌트들이 자동으로 업데이트 된다.   🟥 ObservableObject Combine 프레임워크의 프로토콜로, 객체가 변경될 수 있음을 나타낸다.이 프로토콜을 준수하는 클래스는 프로퍼티가 변경될..

iOS/Swift 2024.06.03

Combine (MVVM 패턴)

Combine | Apple Developer Documentation Combine | Apple Developer DocumentationCustomize handling of asynchronous events by combining event-processing operators.developer.apple.com  🟥 Combine 이란? 이벤트를 처리하는 operators들을 결합함으로써 비동기 이벤트들을 커스텀하게 다룬다. Combine을 사용하면 비동기 작업과 데이터 흐름을 선언적으로 작성할 수 있으며, 특히 비동기 이벤트와 데이터 스트림을 처리하는 데 매우 유용하다. 🟥 핵심 개념Publisher:Publisher는 이벤트를 발행하는 객체이다Publisher는 데이터를 제공하고, 구..

iOS/Swift 2024.05.30

MVVM 패턴 - Binding 개념

✅ MVVM 패턴이란? Model-View-ViewModel로 구성된 아키텍처 패턴 ✅ 구성요소 데이터를 처리하는 모델(Model)사용자에게 보여지는 UI인 뷰(View)뷰에 바인딩되어 모델과 뷰 사이를 이어주는 뷰-모델(View Model) ⭐ Model과 View뿐만 아니라 Binding을 통하여 View와 View Model 간의 의존성까지 최소한 형태로, 데이터 처리 로직과 UI 간 상호 영향이 적어 모듈화를 통해 재사용성을 높이고 및 역할별로 Unit Test가 용이해진다.    🟥 바인딩 (Binding) MVVM (Model-View-ViewModel) 패턴에서 바인딩(Binding)은 View와 ViewModel 사이의 데이터와 이벤트를 자동으로 동기화하는 메커니즘이다. 바인딩을 통해 V..

iOS/Swift 2024.05.30

MVVM 패턴 (Model - View - ViewModel)

사용자의 Action들은 View를 통해 들어옵니다.View에 Action이 들어오면 ViewModel에 Action을 전달합니다.ViewModel은 Model에게 데이터를 요청합니다.Model은 ViewModel에게 요청받은 데이터를 응답합니다.ViewModel은 응답 받은 데이터를 가공하여 저장합니다.View는 Data Binding을 이용해 UI를 갱신시킵니다. 🟥 MVVM 패턴이란?Model, View, ViewModel 로 구성된 패턴이다.  Model: 애플리케이션의 데이터를 나타낸다. 비즈니스 로직과 관련된 데이터를 처리한다. View: 사용자 인터페이스를 나타낸다. 사용자에게 정보를 보여주고, 사용자 입력을 받는다. ViewModel: View와 Model 사이의 중간자 역할을 한다. V..

iOS/Swift 2024.05.30

[Twitter Clone] Add firebase - part1

🟨 구현 화면  🟨 구현 순서Firebase 홈페이지에 접속하여 denpendency 받을 것 OnboardingViewController 생성RegisterViewController 생성  🟨 Firebase 적용아래의 홈페이지에 들어가 firebase에 앱을 등록한다.https://console.firebase.google.com/u/0/project/twitterclone-e53b7/overview 로그인 - Google 계정이메일 또는 휴대전화accounts.google.com  🟨 HomeViewController.swift 코드 구현테스트 목적으로, onBoarding View가 나오게 한다.  override func viewWillAppear(_ animated: Bool) {..

Clone App/Twitter 2024.05.28

[Twitter Clone] Add Indicator button in profile view

🟨 구현 화면  🟨 구현 순서profile View 내의 카테고리 별 버튼이 눌렸을 때, 눌린 것과 안눌린 것의 굵기 정도 차이를 준다. 버튼 아래에 indicator 라는 지시선을 생성한다.   🟨 ProfileViewController.swift 코드 구현화면이 처음 로드될 때, 활성화된 버튼을 표시하기 위해 굵기 정도에 차이를 준다.  override init(frame: CGRect) { super.init(frame: frame) ... configureStackButton() } private func configureStackButton() { for (i, button) in sectionStac..

Clone App/Twitter 2024.05.27

[Twitter Clone] Continue implementing the profile view

🟨 구현 화면  🟨 구현 순서profile view의 상태표시줄 (시간, 배터리 표시하는 부분)에 대한 설정한다.table의 header를 safearea까지 늘리고, 스크롤에 따라 상태 표시줄을 지정해준다.profile의 각 카테고리 버튼을 열거형으로 설정한다. 🟨 ProfileViewController.swift 코드 구현viewDidLoad() 메서드 내에 코드 구현 navigationController?.navigationBar.isHidden = trueprofileTableView.contentInsetAdjustmentBehavior = .never 위의 코드를 구현하면 메인화면이 SafeArea까지 넘어 간다. 근데 이렇게 하면 HomeViewController → ProfileVi..

Clone App/Twitter 2024.05.27