Customizing navigation bars in order to fit the given design has always been redundant and boring to me. Each of your app controllers are given its own navigation bar thus resetting all your customizations like the UIBarButtonItems. There are definitely ways to reduce code redundancy through subclassing UINavigationController and setting this customizations inside that class upon initializing or any other trigger point. I’ve done that in few of my projects and it works. However integrating is still done with quite a number of code.
You have to initialize, set properties, and declare delegate methods every time you need to place it on your new controller. In such case, I was looking for other options to make it simpler. And an idea came which is now living in SMTNavigationBar.
It is an Obj-C library that allows you to access and integrate your custom bar items anywhere. You only have to configure and set up once. Button selector methods are easy to override and supports block methods which you could carry over to other controllers. Isn’t that nice? I basically built it from the context of my own dealings with customizing navigation bar items. V.1 is now out. You could get more details there.
There are still a number of to-dos. It’s open and available just fork, test, pull request.