When I print the label's text value in the console, the correct value shows up.
However, when I run the simulator, it appears to be null (or the label does not update). The problem is that since Parse uses the Bolts framework, exceptions thrown in completion blocks are automatically caught and silently ignored (very annoying, I know).
Maybe (a) leads to the view not properly connected to the nib or controller, but can't see where the break could sit ....
You need to control-drag your label object to your implementation (view Controller Class.m) file using the Counterparts split pane view in Xcode, and you should give it a meaningful name ('label' alone is quite vague).
However, the notification was fired from a background thread so even the listener methods that update the label's text are fired in the background.
If you're relying on an I had a UILabel showing a level number that would not update to the new level number on a UIView Controller.
Also, after adding the wrap in my completion block, it resulted in a null text value, rather than the correctly printing value in the simulator. Can you check in other methods that are called after view Did Load that you don't set self.
If you have a method that runs on the main thread and does some activity (such as search a database), updates that you make to the UI will not be committed until the run loop gets control. Although this may be a sensible and functional hack, it doesn't beat the alternative. Traced back the problem to the fact that a UI update was getting triggered (but not showing up) from a code block that was set to run after an asynchronous URL request finished.Thanks for answering - but that really can't be the problem, because i do check my array's bounds in that function, and the text value does print out correctly.It just doesn't update the Label's text field. Update: I re-checked that the random number was 2 and there are 4 elements in the array. It looks like your variable is being set properly in view Did Load, but reset to nil before the view is displayed. I set it to true if we navigate from view controller A in prepare For Segue method. like below - So i am able to assign value from the service return to the label when we navigate from VC A to VC B. But I am not able to hide it when we navigate from VC C to VC B.