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

时间:2012-04-25 02:45:40

标签: objective-c ios xcode ios5

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

我已经尝试过这两个:

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

和此:

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

都没有工作。

2 个答案:

答案 0 :(得分:21)

您无法关闭尚未显示的视图控制器。 didLoad具有纯粹的内存管理功能,您可以将其用作(部分)构造函数。 可能有效的方法是在viewDidAppear中启动一个segue,但我建议首先从你想要的视图开始。

答案 1 :(得分:1)

最可能的原因可能是操作系统忽略了第二个屏幕转换调用,而其中一个正在进行中。在ViewDidLoad中,视图转换(当前视图)仍未完成。您在完成之前要求另一个转换,操作系统会忽略它。它必须是从不同函数调用时segue工作的原因。尝试在ViewDidAppear内部调用(或延迟一段时间后)