Mesmo que você possa permitir que MainViewController
chame diretamente um método como updateLabel
definido em SubViewController
, a visualização do SubViewController
não será atualizada então. Mesmo se você chamar setNeedsDisplay
ou forçar para estar no tópico principal. Tudo. não vai. Socorro.
A única coisa que me ajudou foi implementar um NSNotificationCenter postNotification
chamado MainViewController
e observado por SubViewController
.
Exemplo:
// 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];
}
Uma alternativa é usar delegados. (Mas eu não queria ir por esse caminho.)