RxSwift + MVVM: 예제 코드 흐름 따라가기 #1
이전에 RxSwift + MVVM 예제에서 UITableView를 사용해서 따라 구현했었는데, RxSwift를 더 학습하고 나서 코드를 다시 보고자 함.
이전 실습에서는 RxCocoa를 사용하지 않고 RxSwift만 사용해서 구현.
즉, `.tap` 등 사용하지 않고, Delegate를 활용
스크린샷




MVVM 설계
- MainView
- View : MainViewController를 구현
- ViewModel : TableViewModel을 사용
- 싱글톤으로 만들어서 데이터를 공용으로 관리하게끔
- Model : TableCell을 선언하여 사용
- 메인 뷰의 IBOulet을 여기서 갖게 만들자
- DetailView
- View : DetailViewController를 구현
- ViewModel : MainView의 TableViewModel을 같이 사용
- 가급적이면 데이터의 선언은 Model에서 데이터의 변경사항은 ViewModel에서 진행한다.
- 함수는 가급적이면 ViewModel에서 사용하고자 하였으며, IBOulet의 엮인 것들은 Model에서 작성하였다.
performSegue
- 데이터 전달의 한 방법인데, 이건 자꾸 까먹어서 찾아보게 된다.
- unwindSegue도 있는데 이것도 자꾸 까먹는다
extension MainViewController : UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let row = indexPath.row
performSegue(withIdentifier: "DetailViewController", sender: row)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard let id = segue.identifier,
id == "DetailViewController",
let detailVC = segue.destination as? DetailViewController,
let row = sender else {
return
}
detailVC.row = row as? Int
}
}
'apple > RxSwift, ReactorKit' 카테고리의 다른 글
| RxSwift Ch12. Beginning RxCocoa (0) | 2021.08.12 |
|---|---|
| RxSwift + MVVM: 예제 코드 흐름 따라가기 #2 (0) | 2021.07.18 |
| RxSwift - Relay와 Subject (0) | 2021.07.12 |
| RxSwift 스터디 8주차 Time Based Operators (cold, hot) (0) | 2021.07.12 |
| RxSwift 스터디 7주차 Combining Observables (0) | 2021.07.11 |