Coming from a background in Adobe Flash and Flex, I am finding NGUI to be very very painful. The architecture was not designed to be data driven. It is starting to add databinding, but still lacking the idea of a DataProvider. For example, the popupList onChange returns a string and if we wanted to know the ID of the selected item, then we have to do an URL encode on the label's name. To programmatically set the popupList to a particular selection is also not so easy because it's architecture was not built as a data driven GUI.
Even though Unity's GUI system is not very performant, it's strong point is that it was built as a data driven GUI system which allows for great flexibility. On the other hand, NGUI was built with graphical performance but lacks the data driven aspect of a modern GUI system.
Since the new uGUI is based on NGUI for performance, it also need to take care not to lose the data driven features. I understand that the new generic data binding system is in 3.5.6. This is great, but data binding without Data Providers is still half the solution of a truly modern GUI system. Since we've waited for over 2 years for the new uGUI, please give us something that's worth waiting for.
Here is how Flex works with data providers.
http://help.adobe.com/en_US/flex/using/WSc3ff6d0ea77859465cd856bc1208828aef9-8000.html