I'm using multiple UICheckboxes with UICheckboxControlledObject, and noticed that if I use NGUITools.SetActive to open, close, then open a panel with a radio group of these, the code in Start() doesn't get executed again, so it only respects the startsChecked property once. I'm using the checkbox group as a tab bar of sorts, where each tab controls the visibility of a separate panel.
When the entire hierarchy is activated the first time, the radio group works as expected and only the panel controlled by the UICheckbox is active. However, that second open doesn't run Start() again on the checkboxes, so all of the panels become visible and show up on top of one another, which is a mess. To get around this, I copied the initialization code from Start() to OnEnable(), which seems to work. It seems like the UICheckboxes in a radio group should respect startsSelected whenever it is enabled, which is very common when working with multiple panels.
UICheckboxControlledComponent doesn't have this problem because deactivated UIWidgets don't get re-enabled when SetActiveRecursively gets called on a parent GameObject.