iOS 6-以编程方式触发Unwind Segue不起任何作用

iOS 6-以编程方式触发Unwind Segue不起任何作用,ios,objective-c,uistoryboard,segue,uistoryboardsegue,Ios,Objective C,Uistoryboard,Segue,Uistoryboardsegue,在我的应用程序启动时,它以编程方式显示使用segue的LoginViewController。视图控制器以模型形式呈现,过渡设置为交叉融合。在成功进行身份验证后,我希望通过编程方式触发一个展开序列来关闭登录视图。所以我把这个添加到我的头文件中: - (IBAction)unwindSegue:(UIStoryboardSegue *)segue; 现在在IB中,我可以控制从“文件所有者”LoginViewController到退出按钮的拖动,并选择unwindSegue:。这将创建一个手动序列

在我的应用程序启动时,它以编程方式显示使用segue的LoginViewController。视图控制器以模型形式呈现,过渡设置为交叉融合。在成功进行身份验证后,我希望通过编程方式触发一个展开序列来关闭登录视图。所以我把这个添加到我的头文件中:

- (IBAction)unwindSegue:(UIStoryboardSegue *)segue;
现在在IB中,我可以控制从“文件所有者”LoginViewController到退出按钮的拖动,并选择
unwindSegue:
。这将创建一个手动序列,它将正确显示在文件所有者的连接检查器和退出按钮中。然后,我在IB中从场景中单击新创建的“展开”序列,然后为其命名。如果我点击“转到”按钮进行“放松序列”操作,它会带我到上面提到的声明

到目前为止还不错,在我的GCD块中成功进行身份验证后,我会触发此展开序列:

....
dispatch_async(dispatch_get_main_queue(), ^
{
    [self performSegueWithIdentifier:@"UnwindSegueIdentifier" sender:self];

    [self.spinner removeFromSuperview];
    self.spinner = nil;
});
…当它运行时,什么也不会发生。微调器确实被正确移除,但没有任何迹象表明正在执行展开序列

unwindSegue:
实现中的断点永远不会被击中。没有抛出错误。没有任何内容写入控制台。标识符是正确的,我进行了三次检查(否则它将失败)

我看了答案,但我似乎没有遗漏任何东西

但是我注意到,Xcode认为
解绑:
未链接的:

我无法从
unwindSegue:
前面的小圆圈中拖动并将其链接到退出按钮


任何帮助都将不胜感激。

如果您使用模式序列进入登录视图,您只需返回呼叫即可

[self dismissViewControllerAnimated:YES completion:nil];
更准确地说,您应该在演示控制器(您的第一个控制器)处调用它,但如果您在演示控制器处调用,它将被转发。您可以使用完成块执行任何所需的清理。没有必要使用GCD

编辑


回答补充意见:根据您的描述,我不太确定,但您似乎在演示控制器而不是演示控制器上实施了放松操作。展开段允许在没有附加协议的情况下对调用方执行某些操作(例如设置数据)。

引用苹果公司关于展开段的技术说明: 要添加仅以编程方式触发的展开序列,请control+从场景的“视图控制器”图标拖动到其“退出”图标,然后从弹出菜单中选择新序列的展开操作


为什么不让退出按钮触发序列,即直接连接按钮?谢谢你的回复,但我想我可能没有在那里清楚地表达自己的想法。。。我一直在说的退出按钮是绿色的退出顺序按钮,而不是视图上的实际按钮。到底什么应该触发您的放松顺序?为什么您需要以异步方式执行此操作,即为什么要使用GCD?成功验证后会触发segue。身份验证通过调用web服务完成。谢谢。我知道我可以调用
dismissViewControllerAnimated:completion:
,但我更好奇的是,为什么解卷程序不起作用。我刚把它接到一个按钮上,但它还是不工作。另外,GCD的使用是为了使身份验证web服务调用不会阻塞UI,而不仅仅是为了关闭登录视图控制器。你完全正确!我没有在正确的地方执行segue。。。我早该看到的。。。非常感谢。我注意到Xcode仍然报告要断开连接的方法,正如我在屏幕截图中所示。一定是个虫子