Почему функция performSegueWithIdentifier не работает внутри viewDidLoad?
Я пытаюсь вызвать раскладку segue, как только viewDidLoad вызывается на контроллере представления. Segue имеет прикрепленный идентификатор и отлично работает при вызове изнутри метода, связанного с кнопкой или другим элементом управления. Но он не работает внутри viewDidLoad. Он просто молчал. Есть ли правило о том, что segue игнорируется в viewDidLoad?
Я пробовал оба:
[self performSegueWithIdentifier: @"mySegue"
sender: self];
и это:
[self dismissViewControllerAnimated:YES completion:^() {
[self performSegueWithIdentifier:@"mySegue" sender:self];
}];
Ни одна из них не работает.
Ответы
Ответ 1
Вы не можете убрать контроллер представления, который еще не представлен. didLoad
имеет чисто функции управления памятью, вы можете использовать его как (часть) конструктора.
Что может сработать, это начать segue в viewDidAppear
, однако я бы предложил начать с представления, которое вы хотите в первый раз.
Ответ 2
Скорее всего, причиной может быть то, что ОС игнорирует второй вызов перехода к экрану во время выполнения. В ViewDidLoad переход к просмотру (текущего вида) по-прежнему не завершен. Вы запрашиваете другой переход до его завершения, и ОС игнорирует его. Это должно быть причиной того, что segue работает при вызове из другой функции. Попробуйте вызвать внутри ViewDidAppear (или после задержки)