Как установить значение 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.