在我的应用程序启动时,它使用 segue 以编程方式显示 LoginViewController。视图控制器以模态方式呈现,过渡设置为交叉溶解。身份验证成功后,我想通过以编程方式触发展开转场来关闭登录视图。所以我将其添加到我的头文件中:
- (IBAction)unwindSegue:(UIStoryboardSegue *)segue;
现在在 IB 中,我可以从“文件所有者”LoginViewController 控制拖动到“退出”按钮,然后选择unwindSegue:
。这将创建一个手动转场,它正确显示在文件所有者和退出按钮的连接检查器中。然后,我单击 IB 场景中新创建的 Unwind segue,然后为其命名。如果我单击展开转场操作的“转到”按钮,它将带我到上面提到的声明。
到目前为止一切顺利,然后我在 GCD 块中成功验证后触发此展开序列:
....
dispatch_async(dispatch_get_main_queue(), ^
{
[self performSegueWithIdentifier:@"UnwindSegueIdentifier" sender:self];
[self.spinner removeFromSuperview];
self.spinner = nil;
});
......运行时什么也没有发生。微调器确实被正确删除,但没有迹象表明展开转场正在执行。
执行中的一个断点unwindSegue:
永远不会被击中。没有抛出任何错误。没有任何内容写入控制台。标识符是正确的,我三次检查(否则无论如何都会失败)。
我看了答案here https://stackoverflow.com/questions/12792573/cannot-connect-storyboard-unwind-segue, here https://stackoverflow.com/questions/12561735/what-are-unwind-segues-for-and-how-to-use-them and here https://stackoverflow.com/questions/12509422/how-to-perform-unwind-segue-programmatically但我似乎没有错过任何事情。
What I did notice though, is that Xcode thinks unwindSegue:
is not linked:
我无法从前面的小空圆圈中拖动unwindSegue:
并将其链接到“退出”按钮。
任何帮助将不胜感激。