2012-06-24 39 views
7

tôi thấy cách cứng màSự khác nhau giữa navigationController.navigationBarHidden và navigationController.navigationBar.hidden là gì?

navigationController.navigationBarHidden = NO; 

navigationController.navigationBar.hidden = NO; 

không phải là những điều tương tự. Trong thực tế, nếu tôi sử dụng cú pháp đầu tiên để ẩn thanh điều hướng, thì tôi không thể sử dụng cú pháp thứ hai để hiển thị nó: nó đơn giản sẽ không làm bất cứ điều gì. Hơn nữa, cú pháp đầu tiên để hiển thị/ẩn thanh điều hướng luôn hoạt động đối với tôi, trong khi cú pháp thứ hai hoạt động một số lần, nhưng không phải lúc nào cũng vậy. Tôi đã không thể xác định chính xác khi nào nó sẽ hoạt động và khi nào thì không.

Vì tôi đã bị mắc kẹt khi sửa mã của người khác (một ứng dụng hợp lý lớn: trên 20 UIViewControllers), tôi phải tìm kiếm toàn cầu navigationBar.hidden và thay thế bằng navigationBarHidden. Sau đó, tôi phải thực hiện tìm kiếm toàn cầu cho navigationBar setHidden: và thay thế bằng cú pháp navigationBarHidden. Điều này cuối cùng đã khắc phục vấn đề.

Tuy nhiên, tôi muốn hiểu tại sao hai tùy chọn khác nhau được cung cấp và sự khác biệt thực sự giữa chúng là gì.

Trả lời

4

navigationBarHidden áp dụng một hình ảnh động khi cất giấu hoặc hiển thị thời gian Navbar hàng hải này có thể được thiết lập bằng cách sử dụng UINavigationControllerHideShowBarDuration

đâu navigationBar.hidden sẽ trực tiếp thay đổi trạng thái hiển thị của UINavigationBar (mà là một lớp con của UIView)

Kể từ UINavigationBar là một lớp con của UIView nó được thừa hưởng tài sản bool ẩn, không có cách nào thay đổi nó để protected hay private

Từ apple docs

Trình điều khiển điều hướng có trách nhiệm quản lý cấu hình và hiển thị thanh điều hướng và thanh điều hướng . Bạn không bao giờ phải sửa đổi trực tiếp các chế độ xem này. Thay vào đó, bạn nên thao tác chúng thông qua các phương thức và thuộc tính của lớp UINavigationController . Bạn có thể ẩn và hiển thị thanh điều hướng bằng cách sử dụng thuộc tính navigationBarHidden hoặc setNavigationBarHidden: animated: method.

+0

Ok, nó bắt đầu có ý nghĩa. Điều này có nghĩa là tôi không nên sử dụng 'navigationBar.hidden' trực tiếp, nhưng thay vào đó hãy sử dụng' navigationBarHidden' - phải không? –

+0

có điều này có vẻ như vậy, vì bạn có một thuộc tính rõ ràng ẩn và hiển thị navBar –

+0

@AleksG, vui lòng đọc câu trả lời cập nhật –

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