为什么在viewDidLoad中不执行SegueWithIdentifier工作?

一旦viewDidLoad在视图控制器上被调用,我试图触发一个故事板segue。 segue附加了一个标识符,并且在从一个链接到button或其他控件的方法中调用时工作正常。 但是它在viewDidLoad里面不起作用。 它只是默默地失败。 在viewDidLoad中有没有关于segue被忽略的规则?

我已经试过这两个:

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

和这个:

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

既没有工作。

你不能closures还没有出现的视图控制器。 didLoad具有纯粹的内存pipe理function,你可以使用它作为构造函数的一部分。 什么可能工作,是开始在viewDidAppear的segue,但是我会build议首先你想要的视图开始。

最可能的原因可能是操作系统在进行中时忽略了第二个屏幕转换调用。 在您的ViewDidLoad中,(当前视图的)视图转换仍然没有完成。 在完成之前,您正在询问另一个转换,操作系统忽略它。 当从不同的function调用Segue时,它必定是原因。 尝试调用内部ViewDidAppear(或延迟一段时间后)