Выполнение программной передачи после размотки
У меня есть два контроллера просмотра, V1 и V2. V1 представляет V2 модальным переходом в раскадровке. У меня тогда есть раскручивание, которое отклоняет V2, чтобы перейти к V1. Затем вызывается действие Готово. Он печатает правильный NSLog's, однако [self performSegueWithIdentifier:@"viewmessagessegue" sender:self]
не инициируется. Я использую ту же строку кода при нажатии кнопки в V1, и в этом случае она работает правильно. Я не понимаю, почему это не называется...
- (IBAction)done:(UIStoryboardSegue *)segue {
SendToViewController *cc = [segue sourceViewController];
_users = cc.recipients;
NSLog(@"users: %@",_users"); // has the correct data
[self performSegueWithIdentifier:@"viewmessagessegue" sender:self];
NSLog(@"perform segue...:"); // this gets printed
}
1 ответ
Я не уверен в ответе на этот вопрос, но я думаю, что когда выполняется "done:", он действительно не выполняется в этом классе (имеется в виду класс предыдущего экрана). Он либо выполняется в промежуточном месте, либо в вызывающем классе (имеется в виду класс экрана, с которого вы пытаетесь раскрутиться). Если это так, он попытается выполнить prepareForSegue: со стороны раскрутки, а не со стороны V1, и, поскольку там, вероятно, нет segue.identifier, он просто продолжает работу, как если бы он не нашел.... не воспринимайте это как Евангелие... Я думаю, здесь, но я не слишком далеко от цели. Вы могли бы, вероятно, поместить NSLog в V2 prepareForSegue: чтобы проверить это.