Recently I’ve been doing MonoTouch research for iOS development. While doing so I ran into a limitation when using MonoTouch and the new iOS Storyboards. What I’ve found is that in general, MonoTouch and Storyboards play along really well together. However, I found they only play nicely if you don’t need to create any custom controls that manage ViewControllers and navigation. If you are just creating a simple application that has very straightforward navigation and uses only the standard iOS controls or subclassed controls, Storyboards are the way to go. If you decide that you want custom controls that manage ViewControllers and want finer control over navigation, Storyboards are not for you. What brought this about was I decided I wanted a neat UITabBar that would have an action button in the middle (similar to Instagram and other photo sharing applications). I quickly realized this isn’t possible by subclassing the UITabBar without a lot of hackish techniques. I decided I was going to create my own UITabBar. In order to do this I needed to create a custom view to act as the tab bar and to manage the active ViewController. This meant instantiating and managing the ViewControllers in code. Now here is where Storyboards fail. The problem I ran into was that the code generated by MonoTouch for my ViewControllers did not contain the proper constructors/bindings needed to instantiate them from code nor could I wire them up myself. MonoTouch had generated some code to bind the ViewControllers’ classes to the Storyboard but it doesn’t allow access to it. Now, sure, I know I could create a method to open the xib and search for the resource to bind to but that seems nasty to me and kludgy. I wanted nice clean binding between my code behind and my xibs. I found that the way to have clean bindings and be able to dynamically instantiate and manage ViewControllers from code was to keep them separate in their independent xibs. Going this route allowed me to use those ViewControllers in both ways, via code and via Interface Builder. In short, if you plan on using MonoTouch to create an app that needs to be able to instantiate and show ViewControllers via code, do not use Storyboards. Otherwise, go for it because Storyboards really simplify navigation and also give you an overview of your application flow.