在我的应用程序启动时,它使用segue编程方式显示LoginViewController。视图控制器以交叉溶解的方式模态呈现。验证成功后,我想通过编程方式触发一个返回segue来关闭登录视图。因此,我将以下内容添加到我的头文件中:
- (IBAction)unwindSegue:(UIStoryboardSegue *)segue;
现在我可以在IB中从“文件所有者”LoginViewController向Exit按钮控制拖动,并选择unwindSegue:
。这将创建一个手动segue,并正确显示在“文件所有者”和Exit按钮的Connections检查器中。然后,我单击IB场景中新创建的Unwind segue,然后为其命名。如果我点击Unwind segue操作的“转到”按钮,它会将我带到上面提到的声明。
到目前为止都很好,然后我在我的GCD块成功验证后触发此Unwind segue:
....
dispatch_async(dispatch_get_main_queue(), ^
{
[self performSegueWithIdentifier:@"UnwindSegueIdentifier" sender:self];
[self.spinner removeFromSuperview];
self.spinner = nil;
});
当运行时没有任何反应。旋转器正确地被移除,但是没有任何迹象表明那个解开的segue被执行了。
unwindSegue:
的实现中断点从未被命中。没有抛出错误。控制台上什么都没有输出。标识符是正确的,我已经三次检查过了(否则也会失败)。
然而,我注意到 Xcode 认为 unwindSegue:
没有被链接:
我无法从 unwindSegue:
前面的小空圆圈拖动并将其链接到退出按钮。
非常感谢任何帮助。