When you call presentViewController
the controllers view is loaded very shortly after that. The view is loaded on the main thread and I guess your processing is also being performed on the main thread. As such the UI will be blocked until the loading is complete.
I would suggest that you move the animated image view to the monitorMenuViewController
. When the view is displayed, determine if a load is required. If it is, show and start the image animation and then start the data load on a background thread. When the load is finished, switch back to the main thread to stop the animation and display the resulting data.