Как установить значение UILabel после segue?

У меня есть простая раскадровка, состоящая из двух UIViewControllers, с их соединением.

UIVC1 → UIVC2

Я пытаюсь установить UILabel на UIVC2 равным строке, хранящейся в UIVC1. Я пытаюсь передать строку в методе prepareForSegue, и до сих пор я установил ее в property в UIVC2.

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"mySegue"]) {
        [segue.destinationViewController setDesc:[Brain description]];
    }
}

Свойство в UIVC2 равно desc.

Затем в моем методе setDesc, который я реализовал, я запускаю self.display.text = self.desc, где display - это мое свойство для UILabel.

Однако это не работает, и даже когда я просто NSLog значение UILabel, он ничего не печатает, что заставляет меня задаться вопросом, поддерживает ли контроллер даже связь с UILabel... (я сделал ctr + щелкнуть и перетащить предмет в раскадровку, чтобы подключить их.)

Есть ли лучший способ сделать это?

Ответ 1

Ваш текст UILabel не устанавливается, потому что prepareForSegue вызывается до того, как IBOutlet для вашей метки на контроллере представления назначения подключен. Итак, в этот момент метка все еще nil (и отправка сообщения в nil не имеет эффекта.)

Вместо этого вы должны создать новое свойство на контроллере представления назначения для хранения строки и установить это свойство в prepareForSegue. Затем в контроллере viewDidLoad контроллера точки назначения используйте значение этого свойства, чтобы установить свойство text вашего UILabel.