2014-11-06 57 views
13

我需要暫時禁用後退按鈕。我知道,它可以使用下面的或類似的東西被隱藏:iOS 8 UINavigationController在我的導航控制器中禁用後退按鈕

[self.navigationController.navigationItem setHidesBackButton:YES animated:YES];

但是,這不是我所需要的,而不是我想要的後退按鈕是灰色的和非響應用戶的觸摸事件。他們是否可以在不更換默認後退按鈕的情況下實現此目的?

在此先感謝!

回答

4

我認爲,以下應該有所幫助:

self.navigationController.navigationItem.backBarButtonItem.enabled = NO; 

UPDATE

對不起球員,我相信沒有成真。

看來屬性backBarButtonItem僅用於爲後退按鈕設置自定義標題或圖像。

從技術文檔:

如果要指定自定義圖像或標題爲返回鍵, 你可以到該屬性指定自定義欄按鈕項(與您的自定義標題或 圖像),而不是。配置您的酒吧按​​鈕 項目時,請勿爲其分配自定義視圖;導航項目無論如何都會忽略後欄按鈕中的自定義視圖 。

此屬性的默認值爲零。

不幸的是我沒有找到禁用後退按鈕與保存其原生的外觀和行爲的任何方式,因爲當我嘗試任何時候定製UIBarButtonItem設置成navigationItem.backBarButtonItem屬性 - 它得到適當的本地後退按鈕樣式更新它總是有enabled == YES

我認爲這是由蘋果完成的一個原因,因爲我們基本上不應該強制用戶留在細節屏幕上,並禁止他回去。 此外,在iOS7和更高版本中,用戶總是可以使用從左側滑動手勢(如果不禁用它)返回。

我可以推薦的唯一一個醜陋的東西是創建一個自定義UIBarButtonItem並將其設置爲leftBarButtonItem與'返回'標題,目標和選擇器將彈出您的viewController。默認情況下,它會替換原生後退按鈕。 然後,您可以照常使用navigationItem.leftBarButtonItem.enabled = NO將其禁用。

不幸的是它不會外觀和行爲(在標題更新的情況下,根據可用空間)作爲本地後退按鈕:(

+1

這是行不通的。我試着在viewDidLoad和viewDidAppear中調用你的代碼,並且在兩種情況下它都沒有任何效果。 – 2014-11-06 10:55:22

+1

@ user3636891我同意這段代碼不適用於我或者 – 2014-11-24 17:55:48

+0

也不適用於我。 – Jeswin 2014-11-26 11:16:41

5

我知道這是很老,但我也有這個問題。

在我的情況在一種情況下,我必須禁用後退按鈕,而在另一種情況下,我必須禁用所有導航按鈕。我的解決辦法禁用總共導航欄在這兩種情況下:

self.navigationController.view.userInteractionEnabled = NO; 

這將不顯示的按鈕爲禁用,但將避免接觸。

希望這將有助於

+7

我認爲這實際上禁用頂視圖控制器的整個視圖的交互...! – fatuhoku 2015-06-15 15:50:16

+0

+1我的用例是禁用後退按鈕,同時顯示一個progres欄並等待網絡響應,所以這個答案是完美的。 – 2016-02-03 02:02:41

15

要禁用後退按鈕,這些命令會讓它做你想讓它做什麼:

啓用:

self.navigationController.navigationBar.userInteractionEnabled = YES; 
self.navigationController.navigationBar.tintColor = [UIColor blueColor]; 

禁用:

self.navigationController.navigationBar.userInteractionEnabled = NO; 
self.navigationController.navigationBar.tintColor = [UIColor lightGrayColor]; 

更新:

從iOS 7開始,還有一個你想在UINavigationBar上禁用的輕掃功能。

// You wrap it an 'if' statement so it doesn't crash 
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { 
// disable the interactivePopGestureRecognizer 
    self.navigationController.interactivePopGestureRecognizer.enabled = NO; 
} 
+0

終於有用的東西! – BridgeTheGap 2015-08-27 10:20:23

+0

還有一個可能會「碰到」的輕掃。我更新瞭如何禁用它。 – Adrian 2015-08-27 10:24:46

+0

這將禁用所有按鈕,而不僅僅是後退按鈕。 – 2016-12-28 15:43:36

6

這隱藏了後退按鈕,使用戶無法訪問。但不禁用它:

[self.navigationItem setHidesBackButton:YES]; 
+0

請[edit]解釋你的代碼。 – 2016-08-04 20:30:26

+0

非常有用的信息! – iWheelBuy 2016-12-18 14:26:39

+0

比@adrian簡單 – 2017-08-23 23:28:26

相關問題