We have a hierarchy that expands like this:
- UIRoot
-- Camera
--- Panel
---- Panel + Managers (Parent containing shop stuff. That enables or disables children. Using NGUITools.SetActive)
----- Anchor + Collider (Window Anchor)
------ Panel + DragablePanel (Current Window. When we navigate between windows, we disable this GO and enable the corresponding window GO, and do some logic)
------- Grid + Anchor (Grid that contains the set of buttons)
-------- DragPanelContents + More Managers (Shop Button)
--------- Sprite (All the UI elements that form a Shop Button)
We're not instantiating and destroying those, just enabling/disabling.
If you need I can send you a prefab containing those objects and their settings, if that could help.