Подтвердить что ты не робот

Почему функция performSegueWithIdentifier не работает внутри viewDidLoad?

Я пытаюсь вызвать раскладку segue, как только viewDidLoad вызывается на контроллере представления. Segue имеет прикрепленный идентификатор и отлично работает при вызове изнутри метода, связанного с кнопкой или другим элементом управления. Но он не работает внутри viewDidLoad. Он просто молчал. Есть ли правило о том, что segue игнорируется в viewDidLoad?

Я пробовал оба:

[self performSegueWithIdentifier: @"mySegue" 
                          sender: self];

и это:

[self dismissViewControllerAnimated:YES completion:^() {
[self performSegueWithIdentifier:@"mySegue" sender:self];
}];

Ни одна из них не работает.

4b9b3361

Ответ 1

Вы не можете убрать контроллер представления, который еще не представлен. didLoad имеет чисто функции управления памятью, вы можете использовать его как (часть) конструктора. Что может сработать, это начать segue в viewDidAppear, однако я бы предложил начать с представления, которое вы хотите в первый раз.

Ответ 2

Скорее всего, причиной может быть то, что ОС игнорирует второй вызов перехода к экрану во время выполнения. В ViewDidLoad переход к просмотру (текущего вида) по-прежнему не завершен. Вы запрашиваете другой переход до его завершения, и ОС игнорирует его. Это должно быть причиной того, что segue работает при вызове из другой функции. Попробуйте вызвать внутри ViewDidAppear (или после задержки)