Bagaimana cara menyembunyikan tombol 'Kembali' pada bilah navigasi di iPhone?


315

Saya menambahkan kontrol navigasi untuk beralih di antara tampilan di aplikasi saya. Tetapi beberapa tampilan seharusnya tidak memiliki tombol 'Kembali' (judul sebelumnya). Ada ide tentang cara menyembunyikan tombol kembali?

Jawaban:


812

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

Cepat:
navigationItem.hidesBackButton = true


@ user8170 cara menyembunyikan barbuttonitem kiri di bilah navigasi ..?
rockey

9
Anda tidak dapat menyembunyikan tombol belakang self.navigationItem.leftBarButtonItem = nil;. Jika Anda telah menetapkan leftbarbuttonitem secara eksplisit, Anda dapat menggunakannya self.navigationItem.leftBarButtonItem = nil;. self.navigationItem.hidesBackButton = YES;akan menyembunyikan tombol Kembali Item
rakeshNS

1
Di iOS 7, self.navigationItem.leftBarButtonItem = nil; tidak mempengaruhi tombol kembali ketika dikeluarkan dari viewDidLoad, viewWillAppear, atau viewDidAppear. Baris kode ini berfungsi dalam viewdidLoad: self.navigationItem.hidesBackButton = YA;
Alex Zavatone

2
tidak yakin apakah ini membantu tetapi 'diri' selalu merupakan pengontrol tampilan yang disajikan di bagian atas tumpukan pengontrol navigasi.
Kunal Balani

self.navigationItem.hidesBackButton = YA; bekerja untuk saya di viewDidLoad, ios 7
leukosaima

38

Cara terbaik adalah menggabungkan ini, sehingga akan menyembunyikan tombol kembali bahkan jika Anda mengaturnya secara manual:

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

6
Untuk menjawab user716216, ia menjelaskannya dalam penjelasan satu kalimatnya. Baris kode kedua adalah yang berfungsi untuk case default. Baris kode pertama berfungsi jika Anda telah membuat dan menambahkan sendiri tombol tersebut.
Alex Zavatone

21

sembunyikan tombol kembali dengan kode di bawah ini ...

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

atau

[self.navigationItem setHidesBackButton:YES];

Juga jika Anda memiliki kustom UINavigationBarkemudian coba kode di bawah ini

self.navigationItem.leftBarButtonItem = nil;

di kelas mana pun ketika Anda menggunakan kode itu maka pada tombol kembali bilah navigasi kelas itu akan bersembunyi ...
Paras Joshi

6

Dalam Swift :

Tambahkan ini ke controller

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


3

Dalam fungsi viewDidLoad dari UIViewController gunakan kode:

self.navigationItem.hidesBackButton = YES;

2

Jangan lupa bahwa Anda perlu menyebutnya pada objek yang memiliki kontroler nav. Sebagai contoh, jika Anda memiliki nav controller mendorong pengontrol tab bar dengan RootViewController, memanggil self.navigationItem.hidesBackButton = YESRootViewController tidak akan melakukan apa-apa. Anda benar-benar harus meneleponself.tabBarController.navigationItem.hidesBackButton = YES


2

Jangan lupa bahwa kami memiliki gerakan geser ke belakang sekarang. Anda mungkin ingin menghapus ini juga. Jangan lupa untuk mengaktifkannya kembali jika perlu.

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

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

1

Tambahkan kode ini di pengontrol tampilan Anda

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

1

Bagi saya tidak satu pun di atas yang berfungsi, itu tidak memiliki efek visual. Saya menggunakan storyboard dengan tampilan yang "tertanam" di pengontrol navigasi.

Saya kemudian pada tingkat kode menambahkan menuItems saya dan untuk beberapa alasan "backButton" terlihat ketika secara debugging hierarki tampilan, dan Ikon menuItem saya ditampilkan di bawah "tombol kembali" yang tidak terlihat.

Saya mencoba pengaturan, seperti yang disarankan pada berbagai metode pengait dan itu tidak berpengaruh. Kemudian saya mencoba pendekatan yang lebih brutal dan beralih ke subview yang juga tidak berpengaruh.

Saya memeriksa ukuran ikon saya dan tampaknya ok. Setelah merujuk pada dia, "Human Interface Guideline" saya mengkonfirmasi bahwa Ikon saya benar. (1 piksel lebih kecil dalam kasus saya 24px 48px 72px).

Bagian yang paling aneh adalah perbaikan ...

Saat menambahkan Item BarButton berikan judul dengan setidaknya satu karakter , Dalam kasus saya karakter spasi.

Semoga ini bisa membantu seseorang.

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

Itu tidak berfungsi untuk saya dalam semua kasus ketika saya mengatur

self.navigationItem.hidesBackButton = YA;

di viewWillAppear atau ViewDidLoad, tetapi berfungsi dengan baik ketika saya mengaturnya di init dari viewController.


0

coba yang ini - self.navigationController?.navigationItem.hidesBackButton = true



0
navigationItem.leftBarButtonItem = nil
navigationItem.hidesBackButton = true

jika Anda menggunakan blok kode ini di dalam DidLoad atau loadView bekerja tetapi tidak bekerja dengan sempurna. Jika Anda perhatikan dengan teliti, Anda dapat melihat tombol kembali bersembunyi saat tampilan Anda dimuat. Terlihat aneh.

Apa solusi yang sempurna?

Tambahkan komponen BarButtonItem dari componentView (Command + Shift + L) ke bilah navigasi viewControllers target Anda.

Pilih BarButtonItem atur Title = "" dari panel kanan

masukkan deskripsi gambar di sini

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.