Это решение.
IBOutlets не готовы к использованию, пока контроллер представления не завершит загрузку.
Например, если вы хотите установить текстовое свойство UILabels, вам нужно сначала установить NSString на вашем контроллере, а затем установить текстовое свойство меток в где-то, например, viewDidLoad.
Так в вашем firstViewController.m: (Это для раскадровок, но применима та же идея)
- (void)buttonPress:(id)sender {
[self performSegueWithIdentifier:@"mySegue" sender:self];
}
- (void)prepareForSegue(UIStoryboardSegue *)segue sender:(id)sender {
SecondViewController *secondViewController = [segue destinationViewController];
secondViewController.stringForLabel = @"My Label String";
}
Тогда в .h вашего второго ViewController:
@property (strong, nonatomic) IBOutlet UILabel *label;
@property (strong, nonatomic) NSString *stringForLabel;
Затем мы устанавливаем свойство text для UILabel в viewDidLoad secondViewController.m.
На этом этапе IBOutlet был создан и готов к работе.
- (void)viewDidLoad {
[super viewDidLoad];
self.label.text = self.stringForLabel;
}