2015-03-31 30 views
1

我試圖捕獲後退按鈕的事件並觸發didClickBarButtonnLeft:方法。UIBarButtonItem事件處理不起作用

下面的代碼不起作用:

[self.navigationItem.leftBarButtonItem setTarget:self]; 
[self.navigationItem.leftBarButtonItem setAction:@selector(didClickBarButtonnLeft:)]; 

但這確實:

UIBarButtonItem* barButtonLeft; 
barButtonLeft = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:SIDE_VIEW_BAR_BUTTON] 
                style:UIBarButtonItemStylePlain 
                target:self 
                action:@selector(didClickBarButtonnLeft:)]; 

    self.navigationItem.leftBarButtonItem = barButtonLeft; 

    [self.view setUserInteractionEnabled:YES]; 

的一點是,我不希望替換默認後退按鈕圖標。這兩個腳本均在-(void)viewDidAppear:(BOOL)animated方法內。

回答

0

我有一些事情可以幫助。首先,要訪問的navigationItem後退按鈕的最好的辦法是說:

self.navigationItem.backBarButtonItem 

嘗試使用的,與其self.navigationItem.leftBarButtonItem,看看有什麼變化。

其次,如果你想要做的是檢測時,視圖控制器正在從導航堆棧中刪除,則可以覆蓋viewWillDisappear:並執行它像下面這樣:

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 
    if (self.isMovingFromParentViewController) 
    { 
     // call your back button pressed method 
    } 
} 
+0

這不是一個事件處理程序。 – Ricardo 2015-03-31 13:48:05

+0

它仍然以同樣的方式工作。 viewWillDisappear:當視圖控制器離開屏幕時被調用。從文檔:isMovingFromParentViewController「返回一個布爾值,指示視圖控制器正在從其父項中移除的過程中。」因此,達到相同的效果。 – 2015-03-31 13:55:17

+0

除非,當然,你正試圖重寫後退按鈕正在做什麼。在這種情況下,或者嘗試我剛纔提到的選項1,或者只是隱藏後退按鈕並創建一個看起來像後退按鈕的新的酒吧按鈕項目。 – 2015-03-31 13:57:59

相關問題