2011-11-21 45 views
26

Tôi đang sử dụng bảng phân cảnh và tôi đang cố gắng ẩn thanh trên cùng của bộ điều khiển điều hướng chính khi nhấn một nút nhất định (hoặc chức năng được gọi). Tôi biết tôi phải khởi tạo một đối tượng đề cập đến một bộ điều khiển chuyển hướng từ một bảng phân cảnh (sử dụng mã định danh), nhưng khi tôi gửi thông báo setNavigationBarHidden đến đối tượng mới được tạo này thì không có gì thực sự xảy ra trên màn hình.Bảng phân cảnh - Ẩn thanh trên cùng của bộ điều khiển điều hướng theo chương trình

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
UINavigationController *navController = (UINavigationController*) [storyboard instantiateViewControllerWithIdentifier:@"MyNavController"]; 

[navController setNavigationBarHidden:YES animated:YES]; 

Có ai biết vấn đề là gì không?

+0

Bạn đã xác nhận rằng 'navController' không bằng' nil'? –

+0

có, đã thử nó và nó không phải là ... điều kỳ lạ là, tôi thậm chí không thể đặt tiêu đề của bộ điều khiển điều hướng này, hoặc tương tác với nó bất kỳ cách nào khác. Tôi thực sự không biết vấn đề ở đâu là ...:/ –

Trả lời

67

Cuối cùng đã giải quyết được. Bạn nên luôn ẩn thanh điều hướng chỉ thông qua viewController.

Trong câu hỏi của tôi ở trên, tôi đã tạo ra một navigationController hoàn toàn mới không trỏ đến navController thực trên màn hình. Bạn có thể có được những "thực", một thông qua bộ điều khiển xem như thế này:

[viewController.navigationController setNavigationBarHidden:YES animated:YES]; 
+1

Swift: 'self.navigationController? .setNavigationBarHidden (true, animated: false)' –

5

tôi phải đối mặt với cùng một vấn đề, điều này làm việc cho tôi

navController.navigationBar.hidden = YES;

0

Tôi ẩn thanh Điều hướng bằng cách bỏ chọn Chế độ hiển thị thanh "Hiển thị thanh điều hướng" trong thanh tra thuộc tính.Hope giúp người nào đó.

enter image description here

14

Có 2 cách để ẩn thanh trên cùng của Navigation Controller:

1) Programatically

[self.navigationController setNavigationBarHidden:YES animated:YES]; 

2) Sử dụng giao diện Builder

Bạn có thể bỏ chọn "Hiển thị thanh điều hướng" trong danh sách thuộc tính của Bộ điều khiển điều hướng.

enter image description here

Hãy chắc chắn rằng bạn đã chọn cảnh có chứa Navigation Controller. Hình ảnh ví dụ về cảnh.
enter image description here

3

trong nhanh chóng:

self.navigationController!.navigationBar.hidden = true 

một cái gì đó như thế này:

override func viewDidLoad() { 
     super.viewDidLoad() 
     self.navigationController!.navigationBar.hidden = true 
    } 
+0

Đối với Swift 4 thuộc tính được đặt tên isHidden – Gerriet

0

SetRoot RootViewController sau Thay đổi Properties.

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 

// Create Navigation controller with RootViewController 
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:[storyBoard instantiateViewControllerWithIdentifier:@"MyRootViewController"]]; 

Thiết RootViewController

[appDelegate.window setRootViewController: navController]; 

hoặc nếu không bạn có thể làm ở bất kỳ ViewController

[self.navigationController setNavigationBarHidden:YES animated:YES]; 
0

Trong Xamarin.iOS

base.NavigationController.NavigationBarHidden = true; 
1

Những câu trả lời là chính xác. Chỉ muốn thêm rằng bạn có thể muốn đặt lại thanh điều hướng khi rời khỏi chế độ xem vì các chế độ xem khác có thể sử dụng nó và khi bạn ẩn một chế độ xem ẩn cho tất cả.

override func viewDidLoad() { 
     super.viewDidLoad() 
     self.navigationController?.navigationBar.isHidden = true 
    } 

và trước khi bạn rời khỏi xem:

override func viewWillDisappear(_ animated: Bool) { 
     super.viewWillDisappear(animated) 
     self.navigationController?.navigationBar.isHidden = false 
} 

'

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