See video below.
I have a button called "ChestEntry" that I instantiate into a UIGrid to show individual items within a "treasure chest".
Basically, I iterate through a list of items that should be in the chest and execute something like:
GameObject newChestEntryGo = Instantiate(chestEntry, Vector3.zero, Quaternion.identity) as GameObject;
newChestEntryGo.GetComponent<UIButton>().normalSprite = thisItem;
newChestEntryGo.transform.parent = gridChestContentGo.transform;
At the end, I tell the UIGrid to reposition and then it's all displayed on screen.
The issue seems to be that the sprite applied in code for each item doesn't seem to "stick" and it constantly changes back to the "empty" sprite that's assigned to the source GameObject (ChestEntry) that's copied for all the others. Hopefully the video makes the issue a little clearer than I can describe it

Any thoughts on whether or not this is something wrong with my approach, or is it an NGUI bug?
Thanks!
<video removed>