좌표 받아오기
- flatMap : Observable 을 다른 타입으로 교체해준다는 느낌?
subscribe(onNext:)
: Observable 을 구독한다는 거고 Observable 에서 .onNext(_:)
로 넘겨주는 값을 받겠다는 것
tempCoordinate.onNext(_:)
: 위에서 구독해서 받은 값을 tempCoordinate 으로 넘기고, tempCoordinate 이 구독이 되면 받은 값을 다시 전달하겠다는거
currentCoordinate
는 구독을 기다리는 Observable
fetchingCoordinate
.flatMap {
LocationService.shared.locationSubject
.compactMap { $0 }
.take(1)
}
.subscribe(onNext: tempCoordinate.onNext(_:))
.disposed(by: disposeBag)
// OUTPUT
currentCoordinate = tempCoordinate
메인뷰컨으로 좌표값 전달하기
- currentCoordinate 값을 전달받고, 그 값을 넘기는데
// TabBarController
viewModel.currentCoordinate
.subscribe { [weak self] coordinate in
self?.configureViewControllers(currentCoordinate: coordinate)
}
.disposed(by: disposeBag)
- MainViewModel 에서 그 값을 수령한다
func configureViewControllers(currentCoordinate: CLLocationCoordinate2D){
let mainVM = MainViewModel(currentCoordinate)
let mainVC = MainViewController(viewModel: mainVM)
let nav1 = configureNavController(vc: mainVC, image: UIImage(systemName: "map")!)
let nav2 = configureNavController(vc: SubViewController(), image: UIImage(systemName: "magnifyingglass")!)
viewControllers = [nav1, nav2]
}