Clone App (17) 썸네일형 리스트형 [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.. [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를 통해 얻은 .. [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.. [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.. [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 .. [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.. [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.. [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(.. 이전 1 2 3 다음