UINavigationController is one of the absolute worst design paradigms in UIKit. There are so many different ways it could have been implemented.