Much like when Joni Mitchell riffed on the paving of paradise, Interface Builder is the pariah of iPhone developers. I’ve seen it when it’s fouled up its internals after you’ve spent hours trying to figure out why a simple button event isn’t firing. I’ve faced having to merge the dang thing when working with another developer — yeah, good luck with that! I’ve seen conference sessions on how slow it is to load XIB’s. Interface Builder is the bastard step-child of iPhone development.
Well, speaking personally, I’m so sorry Mr. Builder.
My last three projects have all been done using the Three20 platform: Sports Authority Fit, Fuzz Alert, and one other that has yet to be released so I can’t tell you no matter how much Goober Grape you offer. If you’ve never developed with Three20, it does have its rewards, but one thing you’re taught to do is to nix Interface Builder and build all your UI by hand.
Building UI by hand is easy to accept if your app has screens dominated by tables or single components like photo browsers. However, when you have intricate screens with full-on interfaces, it’s horrifying to position components, hook up delegates, set text field and label properties you barely remember, and so on. HORRIFIC! There are ways to integrate XIB’s with Three20, yes, but we found them a bit error prone early on and it’s really not the spirit of the platform since it offers its own components like TTButton, TTImageView, and so on.
Anywho, I’d done manual UI before and while it was a little irksome at first, I got used to it as the projects wore on. These projects span about 5 months now. Following this, I decided I would quit Three20 and go back to natural iPhone development. My partner in crime and I created iBoost as our alternative. (I’ll let the README speak for it.)
So now, I’m back to the XIB world and today was the first day where I actually got to work with ole’ IB again. And, wow! Aww, baby, I missed you so much! Being able to drag buttons in to a view and set all the properties visually. No crazy rectangle math! And — OOH OOH — being able to set those pesky rotation flags to support landscape! It’s all so easy!
In fact, I was so excited, I’m even letting the XIB’s live side-by-side with the View Controllers now. No separate group for them, they are flying first class in my new standards!
So, all you iPhone developers out there down on Interface Builder, take it from me. Appreciate it! It could be worse. You could have to use Android’s UI builder. (HINT: nobody wants to!) You could even have to use Flash Builder’s abominable UI designer!! (HINT: run for the hills!)
So, before you go to bed tonight, give IB a hug. Tell her you appreciate all she’s done. Close her down and let her rest before you go to bed.
Don’t it always seem to go that you don’t know what you’ve got till it’s gone?