【问题标题】:iOS - Can an unwind segue be aborted using code inside its unwind action method?iOS - 可以使用 unwind 操作方法中的代码中止 unwind segue 吗?
【发布时间】:2013-07-17 01:53:23
【问题描述】:

在我的 unwind segue 的 unwind action 方法中,我将数据发送到远程数据库,它会验证信息是否成功存储在数据库中。

我打算让我的验证函数返回 0 或 1,代表成功或失败,我打算将其用作条件。

我很好奇是否有办法在 unwind 操作方法中中止 unwind segue? (或者我应该在展开转场开始之前进行此验证,并阻止展开转场以某种方式开始?)

我已经阅读了ios segue "cancel",但我不知道他们说要覆盖是什么意思

-[UIViewController shouldPerformSegueWithIdentifier:sender:]

方法。我是否只是制作此方法的自定义版本(见下文)并在 unwind 操作方法中调用它,并根据我的情况使其返回 no/yes?我尝试使用以下方法覆盖该方法:

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
    if (database verification fails) {
        return NO;
    }
    return YES;              
}

我在我的 unwind action 方法中调用了它,但是它并没有取消 unwind segue。

我做错了什么,还是有其他方法可以中止 unwind 操作方法中的 unwind segue?

我是 iOS 新手,如果这个问题听起来很愚蠢,我很抱歉。感谢您的帮助!

【问题讨论】:

  • 你的 shouldPerformSegueWithIdentifier 实现看起来没问题,但它属于你要从中进行的控制器,而不是动作方法。
  • 感谢@rdelmar 的成功!

标签: ios segue abort


【解决方案1】:

最好只检查数据库的结果,然后执行 segue。您发布的第一段代码不会进行太多修改,但是如果您已经制作了展开的 segue 并且可以正常工作,那么您唯一要添加到代码中进行检查的内容就是这样(假设您的数据库返回 YES 并且你将它设为一个名为 returnResult 的 NSString):

if ([returnResult isEqualToString:@"YES"])
{
    [self performSegueWithIdentifier:@"unwindSegueName" sender:self];

}
else
{
    //do whatever here if the value equals anything other than "YES"
}

您的 if 语句将根据您从数据库中返回的数据而有所不同,但您仍将只使用普通的 if 条件。

仅供参考,发布更多代码将为您提供更完整的答案。如果您发布了从数据库返回的数据是什么样的,那么我可以向您展示如何使用它。

【讨论】:

  • 本回复并非初衷。来自rdelmar的原始帖子的评论是正确的
猜你喜欢
  • 2014-10-28
  • 1970-01-01
  • 2016-10-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-29
  • 2015-09-29
  • 1970-01-01
相关资源
最近更新 更多