Everything I have found has stated to make sure the main thread is free to update the view, but doesn't the fact that NSLog runs mean that it is free? @Matthias Is it possible to do something like, "[progress View perform Selector On Main Thread:@selector(set Progress:) with Object: [NSNumber number With Float: progress] wait Until Done: No];"? Why do we have to call a wrapper method instead of telling the UIProgress View to change its progress on the main thread?In my project am downloading data from server, downloading code is in App Delegate.m file and once am passing downloading status(in bytes) to NSNotification object.I can summarise the problem with a small reproducible case that gives the same result. within a loop, increment a value, show the progress and go back until done.Obviously, the progress isn't going to be shown because i OS waits until the loop is done before refreshing the screen.The data loading method calls back regularly to update the progress, it calls a method in the same controller class that originally launched it in the background (the delegate).This method looks like: So I know the method is being called and running because I get the log readout of the increasing progress values but the progress indicator doesn't move.When the view is dismissed (it is a modal view) and then recalled, the method runs and the NSLog shows that the current Progress is incrementing as it should.
If I knew how to take that and embed it into a Swift approach, I would do.But when i tried to show that in UIProgress View and its not showing anything.Code App delegate.m You just create a view Controller and than setup it's slider value?In my View Controller am trying to update UIProgress View using the above downloading status.When i log Downlaoding status (bytes downloaded) am getting correct value.