2013-07-17 27 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的原始帖子的評論是正確的 –