2012-05-24 37 views
1

我有後退按鈕和編輯按鈕,我的導航欄上像下面 enter image description here如何禁用點擊後退按鈕,iphone

點擊編輯按鈕後,我有

enter image description here

我的問題:當我處於編輯模式時,如何禁用單擊後退按鈕,以便用戶無法返回上一屏幕直到他或她完成.....

我試圖爲

self.navigationItem.backBarButtonItem.enabled = NO; 

但後退按鈕仍然是可點擊

PS:到導航欄我添加後退按鈕的方式是

self.navigationItem.hidesBackButton    = NO; 

我可以隱藏後退按鈕,但我不想要那個選項...

請在這個問題上給我建議。任何意見都歡迎在這裏。

+0

+0

我認爲這將是一個壞的想法 - 並可能違反人們期望應用程序的工作方式。我推薦@Sulthan的第一個建議:讓人們點擊「返回」,但只要結束編輯模式就可以了。你可能想看看其他應用程序如何處理類似的情況。 – nielsbot

回答

2

最好的解決方案是在離開屏幕時結束編輯模式,可能會首先顯示確認提示(UIAlertView帶有兩個按鈕「Ok」和「Cancel」)。

但是,要回答這個問題 - 您必須創建一個UIButton,其外觀與後退按鈕(使用圖像)相同。使用此按鈕創建UIBarButtonItem作爲其自定義視圖,並在leftBarButtonItem(注意backBarButtonItem不能具有自定義視圖)中使用它。

然後,您可以在該自定義視圖上將enabled設置爲NO

編輯:我錯了。 UIBarButtonItemenabled財產。關閉後退按鈕的問題可能是因爲您在錯誤的navigationItem上禁用了backBarButtonItem。後退按鈕始終由堆棧中的前一個控制器定義。

+0

你可以只是把一個透明的按鈕在真正的後退按鈕過 - 我認爲這是比較容易。但是這聽起來像可怕的UI – nielsbot

+0

即使它不具有自定義視圖,但bacBarButtonItem是的UIBarButtonItem和的UIBarButtonItem是UIBarItem和UIBarItem的子類確實具有'enalble'屬性。那麼爲什麼我們不能使用它。 – tranvutuan

+0

你是對的。我編輯了答案。 – Sulthan

1

如果該按鈕被阻止,也許應該隱藏它。因爲在我看來,一個沒有響應的按鈕對用戶來說並不好。

- (void)setEditing:(BOOL)editing animated:(BOOL)animated { 
    [super setEditing:editing animated:animated]; 

    [UIView animateWithDuration:0.35f animations:^{ 
     self.navigationItem.hidesBackButton = editing;  
    }]; 
} 
+0

你是儀式。留下沒有反應的按鈕並不好... – tranvutuan

+0

我更新了我的答案以匹配您的確切問題。 – 3lvis

0

self.navigationItem.backBarButtonItem.enabled = NO;

你把上面的代碼放在哪裏。將上面的代碼放在編輯按鈕的IBAction方法中。

+0

請再次閱讀我的文章... – tranvutuan

+0

是的,我讀了ttran.What的問題? – Manikandan

+0

我回答的是正確的。 – Manikandan