2011-12-12 45 views
2

我正在使用故事板並嘗試返回到以前的屏幕,當滿足某些條件。 IE,在登錄時找不到用戶名。故事板 - 自動返回到前一個屏幕的條件

基本上,用戶鍵入他們的信息並按下一個按鈕。如果信息不正確或未找到,我會顯示一條UIAlertView消息來通知他們不正確的信息。由於訂單已完成,因此在我使用服務器檢查任何數據之前,屏幕轉換髮生在按鈕按下時。所以在檢查之前我無法停止屏幕更改。

我在UIAlertView中的信號回去用這種方法檢查用戶按下按鈕..

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    [self.navigationController popViewControllerAnimated:YES]; 

} 

我試圖用一條線在該方法返回到上一畫面,但什麼都沒發生。我認爲故事板的工作方式不同,但我不知道用它們返回到前一個屏幕的語法。

謝謝。

+0

這並沒有真正回答你的問題,但最好回到登錄屏幕並提供一個非模態消息,讓用戶知道發生了什麼。應該非常謹慎地使用UIAlertView,而非模態則更好的用戶體驗。 – Besi

+0

這很好。但是,我怎樣才能自動彈回第一個屏幕?這裏的問題不是我想在UIAlertView中做的。除非用戶在下一個屏幕上按下「後退」按鈕,否則我無法自動回到第一個屏幕。 –

回答

1

如果你的故事板推動視圖控制器,那麼你總是可以編程地彈出它。這不是問題。這裏的問題是UIAlertView使用動畫顯示,因此無法一次執行另一個動畫。

  1. 所以你有兩個選擇。在沒有動畫的情況下彈出視圖控制器應該可以工作,但是然後用戶可能不知道他在哪裏獲得。

  2. 您可以將調用視圖控制器的調用放入輔助方法中,然後像這樣調用此方法:[self performSelector:@selector(myPopHelperMethod:) withObject:nil afterDelay:0.8f]。這應該在0.8秒後彈出視圖控制器,這足以讓UIAlertView完成其動畫。

+0

我設置popViewControllerAnimated:爲NO,它似乎沒有任何效果。我也嘗試過輔助方法..我仍然在調用[self.navigationController popViewControllerAnimated:YES]; in myPopHelperMethod對不對?如果是這樣,它也不會做任何事情。當用戶按下按鈕時,是否可以暫停視圖更改?當故事板改變屏幕時,我不知道如何編程設置。我只知道如何簡單地將它們連接到VIA CTRL +單擊故事板視圖中的拖動。 –

+0

你確定self.navigationController不是零,當你試圖彈出你的視圖控制器? – Besi

+0

在進一步的調查中,故事板默認情況下根本不使用navigationcontrollers ..它們必須被添加進去,這顯然是爲什麼它是空的。但那會讓我覺得一個人根本不需要做我想做的事情。 –

0

我想你的self.navigationController是零,這使得你的方法是無操作的。

+0

我會研究這個。 –

+0

在進一步的調查中,故事板默認情況下根本沒有使用navigationcontrollers ..它們必須添加進來,這顯然是爲什麼它是空的。但那會讓我覺得一個人根本不需要做我想做的事情。 –

+0

啊,你當然是對的,那麼一定有另一種方式。 – jv42