전체 글
-
[UIKit] MVVM 에서 KVO 사용하기Swift/UIKit 2022. 12. 29. 16:15
import UIKit class ViewController: UIViewController { var viewModel = ViewModel() let label = UILabel() let button = UIButton() override func viewDidLoad() { super.viewDidLoad() configure() observe() } func configure() { view.backgroundColor = .white view.addSubview(label) view.addSubview(button) label.translatesAutoresizingMaskIntoConstraints = false button.translatesAutoresizingMaskIntoConstra..
-
-
[SwiftUI] MVI Design Pattern 이란?Swift/SwiftUI 2022. 12. 26. 15:15
MVVM 을 사용하다 보니 이게 SwiftUI 에서 최선이 아닐 탠데 라는 고민을 하게 되었습니다.. 그 고민을 하게 된 원인은 👇👇 1. ViewModel 에서 너무 많은 일을 하고 있다. - Action 와 Property 를 모두 관리하려고 하다 보니 흡사 UIKit 에서 MVC (Massive View Controller) 와 같이 ViewModel 이 Massive 해지는 경험을 하게 되었습니다. 2. Data 의 흐름이 관리가 되지 않는다. - 1번째 이유가 겹치는 이야기인데 ViewModel 에서 Property의 값을 변경하기도 하고 참조하기도 하고 다양한 일을 하다보니 점점 Data Flow 가 어떻게 흐르는지 추적하기가 어려워 졌습니다. 그래서 고민하게 되었고 SwiftUI 에서 각광받..
-
[UIKit] cell 안에서 버튼이 실행이 안될때Swift/UIKit 2022. 12. 2. 10:16
Cell 안에 UIview를 넣고 그 view 안에 addSubview 를 했더니 버튼이 안먹었다 그래서 Cell 에다가 바로 addSubview 했더니 잘먹는다 ㅎ UIButton not responding used in a custom UITableViewCell I know this issue is already been asked few times in SO. Despite trying those out, I am still unable to solve my problem. I am using a UITableView inside a UIViewController. I have a custom stackoverflow.com
-
[UIKit] addSubview 리팩토링 해보기Swift/UIKit 2022. 11. 28. 15:37
import UIKit extension UIView { func addSubviews(_ views: UIView...) { for view in views { addSubview(view)} } } 리팩토링 전 👇👇 view.addSubview(stackView) view.addSubview(actionButton) 리팩토링 후 👇👇 view.addSubviews(stackView, actionButton) 괜찮은건가..?
-
[UIKit] MVVM(Combine) 과 UITableViewDiffableDataSource 같이 써보기Swift/UIKit 2022. 11. 28. 14:17
Async/Await, MVVM, Combine, TableDiffableDataSource 를 같이 사용해보았다 VC 에서 TableView와 DataSource 를 들고 있고 MVVM 에서 실제 Data 와 FetchRequest 를 요청하는 함수를 실행한다 APIClient 는 실제로 요청을 보낸다 // ViewController enum Section { case main } var tableView: UITableView! var dataSource: UITableViewDiffableDataSource! private let viewModel = ViewModel() private var cancelBag = Set() func configureTableView() { tableView = U..