🎉 Black Friday Sale! Save 30% when you subscribe today.

UIKit Navigation: Part 1

Episode #169 • Nov 29, 2021 • Subscriber-Only

What does all the work we’ve done with navigation in SwiftUI have to say about UIKit? Turns out a lot! Without making a single change to the view models we can rewrite the entire view layer in UIKit, and the application will work exactly as it did before, deep-linking and all!

Previous episode
UIKit Navigation: Part 1
Next episode
Locked

Unlock This Episode

Our Free plan includes 1 subscriber-only episode of your choice, plus weekly updates from our newsletter.

Sign in with GitHub

Introduction

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.

The item view


References

  • Collection: Navigation
    Brandon Williams & Stephen Celis • Sep 20, 2021
    Note

    Navigation is a really, really complex topic, and it’s going to take us many episodes go deep into it. We will show at its heart, navigation is really a domain modeling problem, which means we need to discover tools that allow us to transform one domain into another. Once this is accomplished we will see that many seemingly disparate forms of navigation can be unified in a really amazing way.

Downloads

Get started with our free plan

Our free plan includes 1 subscriber-only episode of your choice, access to 64 free episodes with transcripts and code samples, and weekly updates from our newsletter.

View plans and pricing