The magic world of uitableview
Xmas is coming soon. Hopefully before the end of the world (21/12/2012) lol :) I am a bit lonely as my gf is not here. So I try to use this period of time learning new things, exploring new stuff out of my fields. I manage to learn a bit more about graphic design (with Pixelmator) and also mobile usability.
My mind is pre-occupied with one of the more interesting projects that I did at work recently. It was really fun. I love content related stuff. I love mobile apps that have tons of contents. I love web apps that have lots of content. I love mobile website that has lots of content. And this project that I am doing currently have quite a bit of content :)
Another small challenge of this project is how to create dynamic forms. The forms have dynamic sections which can make up of different fields. As I am tasked with developing both iPhone and Android version, I did some research about all the open source form frameworks that I can use to speed up development. For Android, it seems there is not much support. Most likely I need to roll my own framework on top of the ListView.
For iOS, I have identified the following libraries which use the magical UITableView to create awesome dynamic forms:
- Sensible TableView
Just a quick review of the frameworks.
1) "Survey" library is too new and quite limited in features.
2) I also do not try "FormKit" as it seems to support only iOS 5 onwards (in my app I need to support iOS 4 too).
3) IBAform is a bit outdated as the most recent development is 2 years ago. However when I try, it seems to run fine with no major issue
4) US2FormValidator is a just a validation helper that overlays a cute tooltip below the form fields with errors. Unfortunately it does not have dynamic forms support. I also find some usability problem which I will discuss later.
That left me with only 2 choices: the commercial Sensible TableView & the free open source QuickDialog. I actually tried the Sensible Tableview first. I only try the free Lite version which is enough for my needs. Initially I was quite impressed with Sensible Tableview framework. Later on I find it much harder (compare to QuickDialog) to customize. I also encounter some weird crashes (related to keyboard notifier delegate) and bugs (the prev/next/done action bar for inline datepicker disappear after click Next/Previous ) which prove to be very frustrating to fix when I do not have the source code. I took more than a few days to find the workarounds after tracing the internal methods. I was also very tempted to buy the framework initially Lucky I did not. It is just too expensive (if I want the full source code) and I only want to use mainly the UI. If they sell the source code for the Lite version only, I might have buy it :)
Frustrated with Sensible Tableview which is closed source and sort of hard to customize the UI, I decided to jump ship to QuickDialog. Initially I was put off by this library as it said it only supports iOS 5. Viewing the source code, I notice that they only use the JSON features in iOS 5 to create dynamic forms from JSON. I just need to remove all the JSON related stuff and it works flawlessly. It only took me less than 1 day to understand and use from the source code and examples. Really well organized and quite easy to extend. I manage to extend the framework with my own elements to build dynamic forms with my app look-and-feel. I have also added an inline multi-line element. Love it!
Ok, this post is too long. I shall write separate 1 about usability.