RxFlow는 RxSwift 기반의 Coordinator 패턴을 지원하는 라이브러리로, 화면 전환(Navigation)과 플로우(Flow)를 명확하게 분리하고 관리할 수 있도록 도와줍니다.
MVVM 아키텍처와 함께 사용되며, 화면 전환 로직을 뷰컨트롤러에서 분리해 코드의 가독성과 유지보수성을 높입니다.
enum AppStep: Step {
case login
case home
case detail(id: Int)
}
Flow 프로토콜을 채택하며, 어떤 Step이 들어왔을 때 어떤 화면을 보여줄지 결정합니다.final class AppFlow: Flow {
var root: Presentable { return self.rootWindow }
private let rootWindow: UIWindow
init(window: UIWindow) {
self.rootWindow = window
}
func navigate(to step: Step) -> FlowContributors {
guard let step = step as? AppStep else { return .none }
switch step {
case .login:
return navigateToLogin()
case .home:
return navigateToHome()
default:
return .none
}
}
private func navigateToLogin() -> FlowContributors {
let vc = LoginViewController()
self.rootWindow.rootViewController = vc
return .one(flowContributor: .contribute(withNextPresentable: vc, withNextStepper: vc.viewModel))
}
}
RxFlow는 화면 전환을 체계적으로 관리할 수 있는 강력한 도구입니다.
MVVM과 함께 사용하면 뷰, 로직, 네비게이션을 명확히 분리하여 깨끗하고 유지보수하기 쉬운 코드를 작성할 수 있습니다.