2013-07-17 25 views
5

在我的unwind segue的展开动作方法中,我将数据发送到远程数据库,并验证信息是否成功存储在数据库中。iOS - 使用unwind动作方法中的代码可以放弃放弃segue吗?

我打算让我的验证功能返回0或1,成功或失败,并且我打算将此作为条件。

我很好奇,如果有一种方法可以放弃放松操作方法中的放松步骤吗? (或者我应该在展开顺序开始之前进行此验证,并防止从某种程度上开始展开顺序?)

我已经阅读ios segue "cancel"但我不知道它们在覆盖

-[UIViewController shouldPerformSegueWithIdentifier:sender:] 

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

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

我在我的unwind动作方法中调用它,但它并没有取消unwind segue。

我是否做了一些不正确的事情,或者是否有另一种方法来放弃放松操作方法中的放松继续?

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

+2

您的shouldPerformSegueWithIdentifier实现看起来不错,但它属于您正在从中继续的控制器,而不是在操作方法中。 – rdelmar

+0

感谢@rdelmar工作! – giant91

回答

2

这可能是最好的,如果你只是检查你的数据库的结果,然后执行segue。你发布的第一段代码不会被修改太多,但是如果你已经完成了unwind segue,那么你唯一要添加到你的代码中的东西就是这样的(可以说你的数据库返回YES,你让一个NSString称为returnResult):

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

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

你的if语句将取决于你从数据库返回的数据有所不同,但你仍然只是使用普通的if条件。

仅供参考,发布更多的代码将为您提供更完整的答案。如果你发布了来自数据库的返回数据,那么我可以告诉你如何使用它。

+0

这个回复不是最初的目的。来自rdelmar的原始帖子的评论是正确的 –