簡體   English   中英

如何隱藏 iPhone 導航欄上的“返回”按鈕?

[英]How to hide 'Back' button on navigation bar on iPhone?

我添加了一個導航控件來在我的應用程序中的視圖之間切換。 但有些視圖不應該有“返回”(前一個標題)按鈕。 關於如何隱藏后退按鈕的任何想法?

Objective-C:
self.navigationItem.hidesBackButton = YES;

Swift:
navigationItem.hidesBackButton = true

最好的方法是將這些組合起來,因此即使您手動設置它也會隱藏后退按鈕:

self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;

使用以下代碼隱藏后退按鈕...

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

或者

[self.navigationItem setHidesBackButton:YES];

另外,如果您有自定義UINavigationBar ,請嘗試以下代碼

self.navigationItem.leftBarButtonItem = nil;

Swift 中

將此添加到controller

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.setHidesBackButton(true, animated: false)
}

使用代碼:

 self.navigationItem.backBarButtonItem=nil;

在 UIViewController 的 function viewDidLoad 中使用代碼:

self.navigationItem.hidesBackButton = YES;

不要忘記您需要在具有導航 controller 的 object 上調用它。 例如,如果您有 nav controller 使用 RootViewController 按下選項卡欄 controller,則在 RootViewController 上調用self.navigationItem.hidesBackButton = YES將無濟於事。 您實際上必須調用self.tabBarController.navigationItem.hidesBackButton = YES

不要忘記我們現在有滑動到后退的手勢。 您可能也想刪除它。 如有必要,不要忘記再次啟用它。

if ([self.navigationItem respondsToSelector:@selector(hidesBackButton)]) {
    self.navigationItem.hidesBackButton = YES;
}

if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
    self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}

在您的視圖中添加此代碼 controller

UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;

對我來說,上述方法似乎都不起作用,它沒有視覺效果。 我正在使用帶有“嵌入”在導航 controller 中的視圖的情節提要。

然后我在代碼級別添加了我的 menuItems,由於某種原因,在可視化調試視圖層次結構時“backButton”是可見的,並且我的 menuItem 圖標顯示在不可見的“后退按鈕”下方。

我按照各種鈎子方法的建議嘗試了設置,但沒有效果。 然后我嘗試了一種更殘酷的方法並迭代了也沒有效果的子視圖。

我檢查了我的圖標大小,似乎沒問題。 在參考了他的蘋果人機界面指南后,我確認我的圖標是正確的。 (在我的情況下小 1 像素 24px 48px 72px)。

然后最奇怪的部分是實際修復......

添加 BarButton 項時,給它一個至少包含一個字符的標題,在我的例子中是一個空格字符。

希望這可以幫助某人。

//left menu - the title must have a space
UIBarButtonItem *leftButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " <--THE FIX 
                                                                    style:UIBarButtonItemStylePlain
                                                                  target:self
                                                                  action:@selector(showMenu)];
leftButtonItem.image = [UIImage imageNamed:@"ic_menu"];

[self.navigationItem setLeftBarButtonItem:leftButtonItem];

當我設置時,它在所有情況下都不適用於我

self.navigationItem.hidesBackButton = 是;

在 viewWillAppear 或 ViewDidLoad 中,但是當我在 viewController 的 init 中設置它時效果很好。

試試這個 - self.navigationController?.navigationItem.hidesBackButton = true

在 c# 或 Xamarin.ios 中,this.NavigationItem.HidesBackButton = true;

navigationItem.leftBarButtonItem = nil
navigationItem.hidesBackButton = true

如果您在 didLoad 或 loadView 中使用此代碼塊,但可以正常工作但不能正常工作。如果您仔細看,您可以看到后退按鈕在您的視圖加載時隱藏。看起來很奇怪。

什么是完美的解決方案?

將來自 componentView (Command + Shift + L)BarButtonItem組件添加到目標 viewControllers 導航欄。

Select BarButtonItem 設置 Title = " " 從右側面板

在此處輸入圖像描述

self.navigationItem.setHidesBackButton(true, animated: true)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM