iOS 6 – 以编程方式触发Unwind Segue什么也不做
在我的应用程序启动时,它使用segue以编程方式显示LoginViewController。 视图控制器以模态方式呈现,设置为交叉溶解。 成功的身份validation后,我想通过以编程方式触发unwind segue来closureslogin视图。 所以我把这个添加到我的头文件中:
- (IBAction)unwindSegue:(UIStoryboardSegue *)segue;
现在在IB我能够控制 – 从“文件的所有者”LoginViewController拖动到退出button,并selectunwindSegue:
这将创build一个手动的继续,它显示在正确的文件的所有者和退出button的连接检查器。 然后,我从IB中的场景中单击新创build的Unwind segue,然后为其命名。 如果我点击“去”button来取消放风行动,它会把我带到上面提到的声明。
到目前为止,我在GCD块中成功进行authentication后,触发了这个过程:
.... dispatch_async(dispatch_get_main_queue(), ^ { [self performSegueWithIdentifier:@"UnwindSegueIdentifier" sender:self]; [self.spinner removeFromSuperview]; self.spinner = nil; });
…..运行时没有任何反应。 微调确实被删除了,但是没有任何放松继续执行的迹象。
unwindSegue:
实现的一个突破点unwindSegue:
永远不会被击中。 没有错误抛出。 没有任何东西被写入控制台。 标识符是正确的,我三重检查(否则它将失败)。
我看了这里和这里的答案,但我似乎没有遗漏任何东西。
但是我注意到,Xcode认为unwindSegue:
没有联系:
我无法从unwindSegue:
前的小空圈拖动,并将其链接到“退出”button。
任何帮助将不胜感激。
如果您正在使用模态search进入您的login视图,您只需要返回即可
[self dismissViewControllerAnimated:YES completion:nil];
更准确地说,您应该在提交控制器(您的第一个控制器)上调用它,但是如果您在提供的控制器上致电,它将被转发。 你可以使用完成块做任何必要的清理。 没有必要使用GCD。
编辑
要回答额外的评论:我不太清楚你的描述,但是你似乎已经在提交的控制器上实现了展开操作,而不是在呈现控制器上。 放松段是允许在呼叫者做一些事情(例如,设置数据)而无需附加协议。
从Apple的技术说明中引用文本Unwind Segue:要添加一个只能以编程方式触发的unwind segue,请从场景的视图控制器图标控制拖动到其退出图标,然后从popup菜单中为新的segueselect展开动作。
链接到技术说明