UINavigationController không có thanh điều hướng?


117

Tôi có một ứng dụng toàn cầu và trên phiên bản iPad tôi đang sử dụng UISplitViewControllerđể tạo giao diện tương tự như ứng dụng Thư.

Tôi gặp sự cố khi đẩy các chế độ xem Chi tiết mới, vì vậy tôi quyết định sử dụng một UINavigationControllerđể tôi có thể đẩy và bật các chế độ xem khi cần thiết. Tuy nhiên, tôi không muốn sử dụng chế độ xem điều hướng hoặc thanh công cụ. Nhưng bất kể tôi làm gì, tôi không thể ẩn thanh điều hướng.

Tôi đã thử bỏ chọn "Hiển thị Thanh điều hướng" trong IB và tôi cũng đã thử cài đặt:

[self.navigationController setNavigationBarHidden:YES];

trong viewDidLoad/ viewDidAppear/ viewWillAppear. Tôi cũng đã thử nó trong mỗi lượt xem sẽ được đẩy. Không có gì hoạt động.

Có điều gì đó tôi đang thiếu ở đây? Có thể có một UINavigationControllermà không có thanh công cụ hoặc thanh điều hướng?


Lớp cha của lớp selflà một thể hiện của cái gì?

Câu trả lời:


192

Bạn có thể làm như sau:

self.navigationController.navigationBar.isHidden = true //Swift 5

trong đó self.navigationController (rõ ràng) là một thể hiện của UINavigationController. Có vẻ hiệu quả với tôi, nhưng tôi chỉ thử nghiệm một thời gian ngắn trước khi đăng bài này.


2
Vì vậy, trong trường hợp của bạn, self.navigationController.navigationBar.hiised = YES;
Ashwin

4
Điều đó đã làm được nó! Mặc dù tôi sẽ nói thêm rằng tôi có thể chỉ cần chọn hộp Ẩn cho thanh công cụ Nagivation trong IB thay vì thực hiện thông qua mã. Cảm ơn!
DOOManiac

1
Vâng, xin lỗi về điều đó. Đáng lẽ ra, tôi nên biết rằng bạn đang sử dụng IB và đề cập đến ô Ẩn thay vì sử dụng mã. Gần đây, tôi đã bắt đầu tạo ra tất cả các giao diện của mình hoàn toàn theo chương trình mà không có tệp .xib, vì vậy hãy đi thẳng vào vấn đề đó để có câu trả lời.
Ashwin

5
Tôi gọi đây là trong viewwillapear trong điều khiển điểm của tôi như thế này - (void)viewWillAppear:(BOOL)animated { self.navigationController.navigationBar.hidden = YES; } và nó hoạt động
Ali

2
Navbar ẩn nhưng màn hình xem điều khiển của tôi không mở rộng ra toàn màn hình
ArdenDev

40

Nếu bạn không muốn không có thanh điều hướng và bạn muốn nội dung được điều chỉnh đến vị trí của thanh điều hướng bình thường, bạn nên sử dụng

self.navigationController.navigationBarHidden = YES;

Điều này cho bạn một kết quả như thế này:

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

Trong khi đó self.navigationController.navigationBar.hidden = YES;cung cấp cho bạn một không gian mà Thanh điều hướng nên ở. Như thế này:

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


Sự khác biệt rất rõ ràng về sự khác biệt trong kết quả với iOS 6. Đối với iOS 7, có vẻ như khoảng trống đã bị loại bỏ, nhưng tôi sẽ đợi nhiều người xác minh đó là trường hợp.
Alex Zavatone

39

Trong Xcode 4.3.2:

  1. Chọn bộ điều khiển điều hướng trong bảng phân cảnh
  2. Chọn Trình kiểm tra thuộc tính trong bảng Tiện ích (bên phải)
  3. Trong danh mục Bộ điều khiển Điều hướng, bạn có hai hộp kiểm:

    [] Hiển thị Thanh điều hướng

    [] Hiển thị Thanh công cụ

Đã làm cho tôi...


8

Swift 4

Tôi ẩn nó trong viewWillAppear

     override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        self.navigationController?.isNavigationBarHidden = true;
    }

Sau đó, bạn có thể đặt nó trở lại khi bạn đẩy một segue (nếu bạn muốn có nút quay lại ở chế độ xem tiếp theo)

     override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
     {
        self.navigationController?.isNavigationBarHidden = false;
     }

3

Swift 3 có lập trình

self.navigationController.isNavigationBarHidden = true

hoặc là

self.navigationController.navigationBar.isHidden = true

Lưu ý: Tôi không thấy sự khác biệt giữa hai phương pháp thử nghiệm này trên iOS 10.


1

Tất cả các câu trả lời này vẫn để lại một khoảng trống ở trên cùng cho thanh trạng thái - hãy thêm dòng này để loại bỏ điều đó:

navController.navigationBar.isHidden = true
navController.accessibilityFrame = CGRect.zero
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.