2011-02-09 21 views
1

當用戶點擊警報視圖中顯示的自定義「後退」按鈕時,我遇到了一些導航到前一個視圖控制器(在我的導航控制器堆棧中)的問題。 我已經嘗試了幾種方法來做到這一點,但我一直無法做到。點擊該按鈕後,應用程序會簡單地返回到彈出警報的控制器(就像用戶按下「cancelButton」一樣)。 希望您能理解我這個示例代碼:從警報視圖按鈕返回導航

在viewDidLoad中,我彈出了警報:

UIAlertView *alert = [[UIAlertView alloc] 
     initWithTitle:@"XXXXXX" 
     message:@"" 
     delegate:self 
     cancelButtonTitle:@"OK" 
     otherButtonTitles:@"Back", nil]; 
    [alert show]; 
    [alert release]; 

之後,視圖控制器的代碼裏面我叫下一個動作要儘量向後導航:

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

整個代碼被執行,它沒有調試錯誤。 如果我沒有正確解釋我的麻煩,請告訴我,我會盡力做得更好! (我是西班牙語,我的英語不是最好的)。 在此先感謝。


我會試着更好地解釋它,爲了告訴你,我的問題可能會更難解決?

我有一個導航控制器,在一個確定的時刻,顯示了與標籤欄查看。您可能知道無法在導航控制器中實現標籤欄控制器,因此我使用了一個「自定義控制器」來插入該標籤欄。

然後,從該視圖與標籤欄(其中我已經添加了一些子視圖)我想導航回到(沒有標籤欄的視圖,單擊警報按鈕),我將其視爲先前的視圖在導航堆棧中,我可以看到當我在導航欄中按下後退按鈕時...

我不知道現在是否更清晰或者我更困惑您... 我可以嘗試讓你成爲控制器的圖表,如果你願意的話。 感謝您的幫助!

+0

您的描述就足夠了。讓我們誰可以幫忙。 – 2011-02-09 10:32:39

+0

你確定`self.navigationController`不是`nil`嗎?而且,導航控制器已經有一些視圖控制器? – EmptyStack 2011-02-09 10:33:31

回答

0

嘗試在一個單獨的線程。

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 
if (buttonIndex == 1) 
{ 
    [self performSelectorInBackground:@selector(newThreadMethod) withObject:nil]; 
} 
} 
-(void)newThreadMethod{ 
    [self performSelectorOnMainThread:@selector(go) withObject:nil waitUntilDone:NO]; 
} 
-(void)go{ 
     [self.navigationController popViewControllerAnimated:YES]; 
    } 

但這不是正確的做法。但暫時它會幫助你。

0

對於標籤欄的一部分,我已成功地將navControllers與tabController合併。標籤欄控制器必須位於圖表的頂部,而不是每個標籤欄項目的視圖控制器,請使用navControllers,特別是在第一個標籤欄項目中;只需隱藏第一個viewDidLoad中的標籤欄,並在需要時取消隱藏。