Passa um valor de um ViewController para outro em Objective-C

Eu sou relativamente novo no Objective-C, na programação. A única coisa que estou suportando atualmente é passar um valor do primeiroViewController para o próximo.

Eu liesta entrada aqui e isso não me ajudou. O que é engraçado, já que sua resposta tem quase 500 votos, então devo ser o problema. O que eu fiz foi o seguinte.

Eu abri meuPreviewViewController.m e adicionou a seguinte linha#import "MainViewController.h" desde que eu queria passar um valor doPreviewViewController para o `MainViewController. Então, quando eu mudar os layouts (o que funciona com sucesso) eu quero passar um valor.

MainViewController  *mainViewController     = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
mainViewController.userId                   = @"539897197";

Como você pode ver, eu quero passar o userId. Para isso, também criei uma propriedade noMainViewController.h

@property ( nonatomic, strong ) NSString *userId;

Agora, na minhaMainViewController.m Eu quero acessar o userId. Mas quando eu logar, o console me diz que énull. No entanto, quando eu defino a variável logo antes daNSLog funciona, então parece que a passagem é o problema.

Adicionalmente noMainViewController.m Eu tenho a seguinte linha

@synthesize userId = _userId; 

mas mesmo quando eu removi essa linha e mudei oNSLog paraNSLog(@"%@",self.userId); o mesmo problema ocorreu.

Como posso passar com sucesso as variáveis? Qual passo estou fazendo errado?

EDITAR É assim que eu troco os layouts

UIViewController    *viewController         = [[MainViewController alloc]init];
MainViewController  *mainViewController     = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
mainViewController.userId                   = @"539897197";
[self presentViewController:viewController animated:YES completion:NULL];

questionAnswers(5)

yourAnswerToTheQuestion