2009-03-05 56 views

Trả lời

758

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

Swift:
navigationItem.hidesBackButton = true

+0

@ user8170 cách ẩn barbuttonitem bên trái trên thanh điều hướng ..? – rockey

+7

@vakio không thực sự hoạt động;) –

+9

bạn không thể ẩn backbutton bởi '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

5

Sử dụng mã:

self.navigationItem.backBarButtonItem=nil; 
36

Cách tốt nhất là kết hợp này, vì vậy nó sẽ ẩn các 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, ông giải thích nó trong lời giải thích một câu của mình. Dòng mã thứ hai là những gì làm việc cho trường hợp mặc định. Dòng mã đầu tiên hoạt động nếu bạn đã tạo và tự thêm nút. –

+0

Cảm ơn. nó đã làm việc!! –

17

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

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

hay

[self.navigationItem setHidesBackButton:YES]; 

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

self.navigationItem.leftBarButtonItem = nil; 
+0

Đây là cách để làm điều đó 'động' hoặc 'theo yêu cầu'. – Linasses

+0

trong bất kỳ lớp nào khi bạn sử dụng mã đó rồi trên nút điều hướng của lớp đó sẽ ẩn ... –

3

Trong chức năng viewDidLoad của UIViewController sử dụng mã:

self.navigationItem.hidesBackButton = YES; 
5

Trong Swift:

Thêm phần này vào khiển

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

Đừng quên rằng bạn cần phải gọi nó trên đối tượng đó có bộ điều khiển nav. Ví dụ, nếu bạn có nav điều khiển đẩy trên một thanh điều khiển thanh với một RootViewController, gọi self.navigationItem.hidesBackButton = YES trên RootViewController sẽ không làm gì cả. Bạn thực sự sẽ phải gọi self.tabBarController.navigationItem.hidesBackButton = YES

1

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

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

Đừng quên rằng chúng tôi có trượt để sao cử chỉ bây giờ. 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

Đối với tôi, không có cách nào ở trên dường như hoạt động, Nó không có hiệu ứng trực quan. 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.

Tôi sau đó ở cấp mã thêm menuItem của tôi và vì một lý do nào đó "backButton" hiển thị khi trực quan gỡ lỗi phân cấp khung nhìn, và biểu tượng menuItem của tôi được hiển thị bên dưới nút "back back" vô hình.

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

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

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

Khi thêm các BarButton mục cho nó một tiêu đề với ít nhất một nhân vật, Trong trường hợp của tôi là một nhân vật không gian.

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 được làm việc cho tôi trong mọi trường hợp khi tôi đặt

self.navigationItem.hidesBackButton = YES;

trong chế độ xemWillAppear hoặc ViewDidLoad, nhưng đã hoạt động hoàn hảo khi tôi đặt nó trong init của viewController.

Các vấn đề liên quan