Làm cách nào để ẩn nút 'Quay lại' trên thanh điều hướng trên iPhone?


315

Tôi đã thêm một điều khiển điều hướng để chuyển giữa các chế độ xem trong ứng dụng của mình. Nhưng một số chế độ xem không nên có nút 'Quay lại' (tiêu đề trước đó). Bất kỳ ý tưởng về làm thế nào để ẩn nút quay lại?

Câu trả lời:


812

Mục tiêu-C:
self.navigationItem.hidesBackButton = YES;

Nhanh:
navigationItem.hidesBackButton = true


@ user8170 làm thế nào để ẩn barbuttonitem bên trái trên thanh điều hướng ..?
đua

9
bạn không thể ẩn backbutton bằng cách self.navigationItem.leftBarButtonItem = nil;. Nếu bạn đã đặt leftbarbuttonitem một cách rõ ràng, bạn có thể sử dụng self.navigationItem.leftBarButtonItem = nil;. self.navigationItem.hidesBackButton = YES;sẽ ẩn nút Quay lại Mục
rakeshNS

1
Trong iOS 7, self.navlationItem.leftBarButtonItem = nil; không ảnh hưởng đến nút quay lại khi được phát hành từ viewDidLoad, viewWillAppear hoặc viewDidAppear. Dòng mã này hoạt động trong viewdidLoad: self.navlationItem.hidesBackButton = YES;
Alex Zavatone

2
không chắc điều này có giúp ích gì không nhưng 'bản thân' luôn là bộ điều khiển xem được trình bày trên đỉnh của bộ điều khiển điều hướng.
Kunal Balani

self.navulationItem.hidesBackButton = CÓ; hoạt động với tôi trong viewDidLoad, ios 7
leukosaima

38

Cách tốt nhất là kết hợp những thứ này, vì vậy nó sẽ ẩn nút quay lại ngay cả khi bạn thiết lập thủ công:

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

6
Để trả lời user716216, anh ấy đã giải thích nó trong phần giải thích một câu. Dòng mã thứ hai là những gì hoạt động cho trường hợp mặc định. Dòng mã đầu tiên hoạt động nếu bạn đã tự tạo và thêm nút.
Alex Zavatone

21

nút ẩn trở lại với mã dưới đây ...

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

hoặc là

[self.navigationItem setHidesBackButton:YES];

Ngoài ra nếu bạn có tùy chỉnh UINavigationBarthì hãy thử mã dưới đây

self.navigationItem.leftBarButtonItem = nil;

trong bất kỳ lớp nào khi bạn sử dụng mã đó thì nút quay lại thanh điều hướng của lớp đó sẽ ẩn ...
Paras Joshi

6

Trong Swift :

Thêm phần này vào bộ điều khiển

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


3

Trong hàm viewDidLoad của UIViewContoder sử dụng mã:

self.navigationItem.hidesBackButton = YES;

2

Đừng quên rằng bạn cần gọi nó trên đối tượng có bộ điều khiển điều hướng. Chẳng hạn, nếu bạn có bộ điều khiển điều hướng đẩy vào bộ điều khiển thanh tab bằng RootViewContaptor, việc gọi self.navigationItem.hidesBackButton = YESRootViewContaptor sẽ không làm gì cả. Bạn thực sự sẽ phải gọiself.tabBarController.navigationItem.hidesBackButton = YES


2

Đừng quên rằng bây giờ chúng ta có động tác trượt để quay lại. Bạn có thể muốn loại bỏ điều này là tốt. Đừng quên bật lại nếu cần.

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

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

1

Thêm mã này trong trình điều khiển xem của bạn

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

1

Đối với tôi không có cái nào ở trên có vẻ hiệu quả, Nó không có hiệu ứng hình ảnh. Tôi đang sử dụng bảng phân cảnh với chế độ xem được "nhúng" trong bộ điều khiển điều hướng.

Sau đó, ở cấp mã, hãy thêm menu của tôi. Vì một số lý do, "backButton" hiển thị khi gỡ lỗi trực quan hệ thống phân cấp chế độ xem và Biểu tượng menuItem của tôi được hiển thị bên dưới "nút quay lại" vô hình.

Tôi đã thử các cài đặt, như được đề xuất ở các phương thức hook khác nhau và điều đó không có hiệu quả. Sau đó, tôi đã thử một cách tiếp cận tàn bạo hơn và lặp đi lặp lại qua các cuộc phỏng vấn mà cũng không có hiệu quả.

Tôi đã kiểm tra kích thước biểu tượng của mình và có vẻ ổn. Sau khi tham khảo Hướng dẫn về Giao diện Con người, tôi đã xác nhận Biểu tượng của mình là chính xác. (Nhỏ hơn 1 pixel trong trường hợp của tôi 24px 48px 72px).

Phần kỳ lạ nhất sau đó là sửa chữa thực tế ...

Khi thêm Mục BarButton, hãy đặt tiêu đề có ít nhất một ký tự , trong trường hợp của tôi là ký tự khoảng trắng .

Hy vọng điều này sẽ giúp ai đó.

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

Nó không hoạt động với tôi trong mọi trường hợp khi tôi đặt

self.navulationItem.hidesBackButton = CÓ;

trong viewWillAppear hoặc ViewDidLoad, nhưng hoạt động hoàn hảo khi tôi đặt nó trong init của viewContoder.


0

thử cái này đi self.navigationController?.navigationItem.hidesBackButton = true



0
navigationItem.leftBarButtonItem = nil
navigationItem.hidesBackButton = true

nếu bạn sử dụng khối mã này bên trong didLoad hoặc loadView hoạt động nhưng không hoạt động hoàn hảo. Nếu bạn nhìn kỹ, bạn có thể thấy nút quay lại đang ẩn khi chế độ xem của bạn tải. Thật kỳ lạ.

Giải pháp hoàn hảo là gì?

Thêm thành phần BarButtonItem từ thành phầnView (Command + Shift + L) vào thanh điều hướng viewControllers đích của bạn.

Chọn BarButtonItem đặt Title = "" từ bảng bên phải

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.