2013-01-10 162 views

回答

20

或者您可以使用UINavigationController的委託方法。當VC的後退按鈕被按下時,方法willShowViewController被調用。

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated; 
+0

夢幻般的@satheeshwaran,正是我想要的...... –

+1

也是我想要的。 :-)爲了記錄,您需要在導航回到的視圖控制器上實現協議。 – doekman

+0

這個解決方案效果很好,而且效率最高。確保與navigationController委託的連接處於 - (void)viewDidAppear:(BOOL)動畫中,否則當第一個viewcontroller第一次啓動時,alert也會出現。 –

-1

創建一個按鈕,並給該按鈕的動作如下。

[self alert]; 

,並顯示報警時,攻過是

[self.navigationController popViewController]; 

在此之後,

self.navigationController.LeftBarButton = myButton; 

後,這可能會幫助

+0

什麼是提醒? – richy

+1

@richy感謝評論這個舊的答案。該警報用於顯示問題中提示的警報。 –

2

創建自己的UIBarButtonItem並將其設置爲leftBarButtonItemviewDidLoad方法mainController。例如(在這裏我使用了一個系統項目,但是您也可以創建一個不同的項目,詳情請參閱類別參考)。

UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(showAlertView:)]; 
self.navigationItem.leftBarButtonItem = leftBarButtonItem; 

// only if you don't use ARC 
// [leftBarButtonItem release]; 

其中

- (void)showAlertView:(id)sender 
{ 
    // alert view here... 
} 
8

首先使用

self.navigationItem.hidesBackButton = YES; 

隱藏後退按鈕,然後創建自己的自定義按鈕:

UIBarButtonItem *backBtn =[[UIBarButtonItem alloc]initWithTitle:@"back" style:UIBarButtonItemStyleDone target:self action:@selector(popAlertAction:)]; 
self.navigationItem.leftBarButtonItem=backBtn; 
[backBtn release]; 

,你的選擇是在這裏:

- (void)popAlertAction:(UIBarButtonItem*)sender 
{ 
    //Do ur stuff for pop up 
} 
+0

K傢伙謝謝,這是第二種選擇,有沒有什麼辦法來檢測UINavigationController的後退按鈕動作..? –

+0

'b'呢?請修復它。 –

+0

@HarishSaran你是什麼意思?當您點擊警報視圖時,您是否需要返回? –

7

最佳和最簡單的方式

嘗試把這個到視圖控制器,你要檢測的按:

-(void) viewWillDisappear:(BOOL)animated { 
    if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) { 
     // back button was pressed. We know this is true because self is no longer 
     // in the navigation stack. 
    } 
    [super viewWillDisappear:animated]; 
} 
0

viewControllerCount - 是持有數量VAR以前的viewControllers在UINavigationController中。然後,我們檢查是否viewControllerCount> [viewControllers count]如果是這樣,我們知道我們會回來(即後退按鈕模仿)。

- (void)navigationController:(UINavigationController *)navigationController 
     willShowViewController:(UIViewController *)viewController 
        animated:(BOOL)animated 
{ 
    NSArray *viewControllers = [navigationController viewControllers]; 

    if (viewControllerCount > [viewControllers count]) 
    { 
     // your code 
    } 

    viewControllerCount = [viewControllers count]; 
} 
相關問題