iPhoneのナビゲーションバーの「戻る」ボタンを隠す方法は?


315

アプリのビューを切り替えるためのナビゲーションコントロールを追加しました。ただし、一部のビューには「戻る」(前のタイトル)ボタンを配置しないでください。戻るボタンを非表示にする方法についてのアイデアはありますか?

回答:


812

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

迅速:
navigationItem.hidesBackButton = true


@ user8170ナビゲーションバーの左側のbarbuttonitemを非表示にする方法..?
ロッキー

9
で戻るボタンを非表示にすることはできませんself.navigationItem.leftBarButtonItem = nil;。leftbarbuttonitemを明示的に設定した場合は、を使用できますself.navigationItem.leftBarButtonItem = nil;self.navigationItem.hidesBackButton = YES;戻るボタンアイテムを非表示にします
rakeshNS

1
iOS 7では、self.navigationItem.leftBarButtonItem = nil; viewDidLoad、viewWillAppear、またはviewDidAppearから発行された場合、戻るボタンには影響しません。次のコード行は、viewdidLoad内で機能します。self.navigationItem.hidesBackButton = YES;
Alex Zavatone 2014年

2
これが役立つかどうかはわかりませんが、「自己」は常にナビゲーションコントローラのスタックの一番上に表示されるビューコントローラです。
Kunal Balani 2014年

self.navigationItem.hidesBackButton = YES; viewDidLoad、ios 7で私のために働く
leukosaima

38

最善の方法は、これらを組み合わせることです。手動で設定した場合でも、[戻る]ボタンを非表示にします。

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

6
user716216に答えるために、彼は1文の説明でそれを説明しました。コードの2行目は、デフォルトのケースで機能するものです。自分でボタンを作成して追加した場合は、コードの最初の行が機能します。
Alex Zavatone 2014年

21

怒鳴るコードで戻るボタンを隠す...

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

または

[self.navigationItem setHidesBackButton:YES];

また、カスタムがある場合は、次のUINavigationBarコードを試してください

self.navigationItem.leftBarButtonItem = nil;

どのコードでも、そのコードを使用すると、そのクラスのナビゲーション
バーの

6

ではスウィフト

これをコントローラーに追加します

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


3

UIViewControllerの関数viewDidLoadで次のコードを使用します。

self.navigationItem.hidesBackButton = YES;

2

navコントローラーを持つオブジェクトで呼び出す必要があることを忘れないでください。たとえば、ナビゲーションコントローラーがRootViewControllerでタブバーコントローラーをプッシュしている場合、RootViewControllerを呼び出しself.navigationItem.hidesBackButton = YESても何も起こりません。あなたは実際に呼び出す必要がありますself.tabBarController.navigationItem.hidesBackButton = YES


2

スライドジェスチャーをスライドできるようになったことを忘れないでください。おそらくこれも削除したいでしょう。必要に応じて、再度有効にすることを忘れないでください。

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

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

1

このコードをビューコントローラーに追加します

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

1

私にとって、上記のどれも機能しないようでした。視覚的な効果はありませんでした。ナビゲーションコントローラーに「埋め込まれた」ビューを持つストーリーボードを使用しています。

次に、コードレベルでmenuItemsを追加します。何らかの理由で、ビュー階層を視覚的にデバッグすると「backButton」が表示され、非表示の「戻るボタン」の下にmenuItemアイコンが表示されます。

さまざまなフックメソッドで提案されている設定を試しましたが、効果がありませんでした。それから私はもっと残忍なアプローチを試み、効果もなかったサブビューを繰り返しました。

アイコンのサイズを調べたところ、問題はないようでした。彼のアップルヒューマンインターフェイスガイドラインを参照した後、私のアイコンが正しいことを確認しました。(私の場合は1ピクセル小さい24px 48px 72px)。

最も奇妙な部分は、実際の修正です...

BarButtonアイテムを追加するときに、少なくとも1文字のタイトルを付けます付けます。私の場合はスペース文字です。

これが誰かを助けることを願っています。

//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];

1

私が設定したとき、それはすべての場合に私のために働いていませんでした

self.navigationItem.hidesBackButton = YES;

viewWillAppearまたはViewDidLoadでは、viewControllerのinitに設定すると完全に機能しました。




0
navigationItem.leftBarButtonItem = nil
navigationItem.hidesBackButton = true

didLoadまたはloadView内でこのコードブロックを使用すると、正常に機能しましたが正常に機能しませんでした。注意深く見ると、ビューの読み込み時に戻るボタンが非表示になっていることがわかります。奇妙です。

完璧なソリューションは何ですか?

componentViewからBarButtonItemコンポーネントを追加します(Command + Shift + L)からターゲットのViewControllersナビゲーションバーします。

右パネルからBarButtonItem set Title = ""を選択します

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.