0

我有一個UITableViewController,它使用didSelectRowAtIndexPath:初始化視圖控制器initWithNibName:。用戶可以返回到表格視圖,但我想執行一個if/else並顯示警報視圖以確認用戶是否想要返回到表格視圖。我沒有線索從哪裏開始。阻止導航控制器導航並要求用戶確認

總之,我想定製後退按鈕。

回答

3

難道你不能創建一個UIBarButtonItem實例並將其分配給視圖控制器的導航項?像這樣的,

UIBarButtonItem * backButton = [[[UIBarButtonItem alloc] initWithTitle:@"Back" 
                   style:UIBarButtonItemStyleBordered 
                   target:self 
                   action:@selector(backButtonPressed:)] autorelease]; 
self.navigationItem.leftBarButtonItem = backButton; 

然後在backButtonPressed:,觸發一個警報視圖。

- (void)backButtonPressed:(id)sender { 
    // Trigger an alert view. 
} 

根據用戶選擇,您可以彈出視圖控制器或不彈出視圖控制器。

+0

太棒了!那是我需要的。我設法定製了按鈕,觸發器工作正常!但是我在代碼中添加了哪些功能才能像普通的後退按鈕那樣工作?因爲現在它不再回來了。 – 2011-06-12 04:29:06

+0

我想通了。非常感謝! – 2011-06-12 04:49:29

0

返回用戶是IBAction爲(或者是你定義的方法,當你設置的按鈕了編程),這樣你就可以從here添加代碼到IBAction爲,把代碼

返回按鈕
- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 
+0

似乎它會阻止導航控制器導航,但我希望它的另一種方式。 tableviewcontroller使用navigationcontroller來初始化視圖控制器。我想在它返回到tableview時捕獲它。謝謝。 – 2011-06-12 01:48:57

+0

爲什麼你想在它返回時捕捉它?當用戶點擊按鈕時,您會希望看到它,就像在原始問題和標題中一樣。 – 2011-06-12 02:16:52

+0

導航控制器位於視圖控制器中,用戶可以在其中進行更改。我想檢查用戶是否想在執行「後退」代碼之前保存/放棄更改。 – 2011-06-12 02:26:12