Update UILabel in SubViewController from MainViewController
Even though you are able to let your MainViewController
directly call a method such as updateLabel
defined in SubViewController
, the view of the SubViewController
will not be updated then. Even if you call setNeedsDisplay
or force to be on the main thread. It all. won't. help.
The only thing that helped me was implementing a NSNotificationCenter postNotification
called by MainViewController
and observed by SubViewController
.
Example:
// MainViewController.m
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
…
[[NSNotificationCenter defaultCenter] postNotificationName:@"profileLoaded" object:userName];
}
// SubViewController.m
- (void)viewDidLoad {
…
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(setUserName:) name:@"profileLoaded" object:nil];
}
- (void) setUserName:(NSNotification *)note {
[_userNameLabel setText: note.object];
}
- (void) dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
An alternative is using delegates. (But I didn't want to go that road.)
Written by Robert Wünsch
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#