iOS - 可以使用其展开操作方法中的代码中止展开segue吗?

gia*_*t91 5 abort ios segue

在我的unwind segue的unwind动作方法中,我将数据发送到远程数据库,并验证信息是否已成功存储在数据库中.

我计划让我的验证函数返回0或1,表示成功或失败,我打算将其作为条件使用.

我很好奇是否有办法在unwind动作方法中取消unwind segue?(或者我应该在展开segue开始之前进行此验证并防止unwind segue甚至以某种方式开始?)

我已经读过ios segue"取消",但我不知道他们说要覆盖的意思是什么

-[UIViewController shouldPerformSegueWithIdentifier:sender:]
Run Code Online (Sandbox Code Playgroud)

方法.我只是制作我自己的这个方法的自定义版本(见下文)并在unwind动作方法中调用它,并根据我的条件使它返回no/yes?我尝试用以下方法覆盖该方法:

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

我在我的展开动作方法中调用它,但它没有取消展开segue.

我做错了什么,还是有另一种方法可以在unwind动作方法中中止unwind segue?

我是iOS新手,所以如果这个问题听起来很傻,我很抱歉.谢谢你的帮助!

Cap*_*Jak 2

如果您只检查数据库的结果,然后执行转场,这可能是最好的选择。您发布的第一段代码不会被修改那么多,但是如果您已经制作了展开转场并正在工作,那么您唯一需要添加到代码中进行检查的内容就是这样的(假设您的数据库返回 YES,然后将其设置为名为 returnResult 的 NSString):

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

}
else
{
    //do whatever here if the value equals anything other than "YES"
}
Run Code Online (Sandbox Code Playgroud)

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

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