Atualizar UILabel em SubViewController de MainViewController

Mesmo que você possa permitir que MainViewControllerchame diretamente um método como updateLabeldefinido em SubViewController, a visualização do SubViewControllernão será atualizada então. Mesmo se você chamar setNeedsDisplayou forçar para estar no tópico principal. Tudo. não vai. Socorro.

A única coisa que me ajudou foi implementar um NSNotificationCenter postNotificationchamado MainViewControllere 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.)