본문 바로가기
728x90
SMALL

Clone App/Twitter17

[Twitter Clone] Add Search Bar 🟨 구현 화면 🟨 SearchResultViewController.swiftsearchbar 에서 검색한 결과 반영import UIKitclass SearchResultsViewController: UIViewController { var users: [TwitterUser] = [] private let searchResultsTableView: UITableView = { let table = UITableView() table.translatesAutoresizingMaskIntoConstraints = false table.register(UserTableViewCell.self, forCellReuseIdentifier: UserTableVie.. 2024. 6. 14.
[Twitter Clone] Show Tweet in Home View 🟨 구현 화면   🟨 Tweet.swiftimport Foundationstruct Tweet: Codable, Identifiable { var id = UUID().uuidString let author: TwitterUser let authorID: String let tweetContent: String var likesCount: Int var likers: [String] let isReply: Bool let parentReference: String?}  🟨 DatabaseManager.swiftcollectionTweets(retreiveTweets ...) 메서드 생성 firebase database 내에서 author.id를 통해 얻은 .. 2024. 6. 12.
[Twitter Clone] Connect to profileView 🟨 구현 화면  🟨 ProfileViewViewModel.swiftgetFormatterDate() 라는 메서드를 통해 날짜를 원하는 형식으로 변경하여 반환한다. import Foundationimport Combineimport FirebaseAuthfinal class ProfileViewViewModel: ObservableObject { @Published var user: TwitterUser? @Published var error: String? // @Published var tweets: [Tweet] = [] private var subscriptions: Set = [] func retreiveUser() { guar.. 2024. 6. 12.
[Twitter Clone] Load Profile Data to profileView 🟨 구현 화면 🟨 ProfileDataFormViewViewModel.swiftimport Foundationimport Combineimport UIKitimport FirebaseAuthimport FirebaseStoragefinal class ProfileDataFormViewViewModel: ObservableObject { private var subscriptions: Set = [] @Published var displayName: String? @Published var username: String? @Published var bio: String? @Published var avatarPath: String? @Published va.. 2024. 6. 12.
[Twitter Clone] Connect to Firebase Storage 🟨 구현 화면   🟨 ProfileDataFormViewViewModel.swiftimport Foundationimport Combineimport UIKitimport FirebaseAuthimport FirebaseStoragefinal class ProfileDataFormViewViewModel: ObservableObject { private var subscriptions: Set = [] @Published var displayName: String? @Published var username: String? @Published var bio: String? @Published var avatarPath: String? @Published .. 2024. 6. 12.
[Twitter Clone] Add ProfileDataFormView 🟨 구현 화면 🟨 ProfileDataFormViewController.swiftimport UIKitimport PhotosUIclass ProfileDataFormViewController: UIViewController { private let scrollView: UIScrollView = { let scrollView = UIScrollView() scrollView.translatesAutoresizingMaskIntoConstraints = false scrollView.alwaysBounceVertical = true scrollView.keyboardDismissMode = .onDrag return scrol.. 2024. 6. 11.
[Twitter Clone] Set user Info into firebase storage 🟨 구현 화면  🟨 구현 순서 1️⃣ TwitterUser 정보 관련 데이터 모델 생성 import Foundationimport Firebasestruct TwitterUser: Codable { let id: String var displayName: String = "" var username: String = "" var followersCount: Int = 0 var followingCount: Int = 0 var createdOn: Date = Date() var bio: String = "" var avatarPath: String = "" var isUserOnboarded: Bool = false init(from.. 2024. 6. 9.
[Twitter Clone] Add signOut, Login View, Error View 🟨 구현 화면  🟨 구현 기능1️⃣ Signout 기능HomeViewController.swift override func viewDidLoad() { super.viewDidLoad() ... navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(systemName: "rectangle.portrait.and.arrow.right"), style: .plain, target: self, action: #selector(didTapSignOut)) } // 로그아웃 기능 @objc private func didTapSignOut(.. 2024. 6. 6.
[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.. 2024. 6. 5.
[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.. 2024. 6. 4.
[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) {.. 2024. 5. 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.. 2024. 5. 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.. 2024. 5. 27.
[Twitter Clone] Add logo, Design ProfileView 🟨 구현화면 🟨 구현 순서navigationItem 의 titleView에 logo 이미지 설정profile 관련된 Controller 및 profileView 생성 🟨 HomeViewController.swift 코드 구현 configureNavigationBar() 메서드로 네비게이션 부분 설정 로고를 네비게이션에 할당: 1. 로고 이미지뷰 생성 및 설정 → 2. 로고 이미지뷰를 담을 뷰 생성 → 3. 해당 뷰를 네비게이션에 설정import UIKitclass HomeViewController: UIViewController { // 네비게이션 부분에 logo 이미지 추가 private func configureNavigationBar() { let size: C.. 2024. 5. 26.
[Twitter Clone] Add tweet actions 구현 화면  구현 순서트윗 액션에 따른 버튼 생성델리게이트 패턴을 사용하여 각 버튼의 액션 별 전달데이터 설정 TweetTableViewCell.swift 트윗 버튼 생성 델리게이트 패턴 사용 목적으로 프로토콜 선언데리게이트 패턴을 사용하기 위한 대리자 선언 각 버튼을 누르면 동작하는 델리게이트 함수 설정import UIKit// 데이터 전달 목적으로 델리게이트 패턴 사용 - 프로토콜 선언 - 1protocol TweetTableViewCellDelegate: AnyObject { func tweetTableViewCellDidTapReply() func tweetTableViewCellDidTapRetweet() func tweetTableViewCellDidTapLike() fu.. 2024. 5. 24.
728x90
LIST