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