Over the last 9 weeks we have built up a pretty complex application in order to dive deep into the concepts of navigation in SwiftUI. We discovered many new tools along the way that allow us to fully drive navigation off of state, including binding transformations, new overloads on existing SwiftUI Navigation APIs, and even all new SwiftUI views that aid in navigation.
When we first started the series of episodes we boldly stated that the ideas we discussed were just as applicable to UIKit as they were to SwiftUI, and are even applicable beyond Swift and the Apple ecosystem. And now we want to put our money where our mouth is. We are going to rebuild the application in UIKit using everything that modern UIKit APIs have to offer us, and see what new challenges it poses.
Even cooler, we aren’t going to build the entire thing from scratch. We are only going to rebuild the view layer. We are going to reuse all of the view models we built previously without making a single change to them. Hopefully this convinces everyone that thinking of navigation is first a domain modeling problem comes with some huge benefits, one of which is that we can be free to swap out parts of the view layer for a completely different paradigm while the business logic layer is none the wiser.