Off the top of my head, it might make sense to create enough UIGrids to contain all your objects with a max number of children in each, and then dynamically enable and disable them as they become visible. You could set up anchoring each grid to the bottom of the previous one in the initialization. Say the currently visible grid is #3. You check if you can see the bottom of the uigrid in the scroll view, and if so, enable grid 4 to the bottom of grid 3. If instead the bottom of the grid isn't visible, but you have a "next" grid enabled, disable it. Similar checks for the top of the grid.
It's almost like you've got a deck of grids above and a deck of grids below your visible grids, and you're just pulling them off the deck as needed.
Memory might be an issue here, I'm not sure.