2012-04-24 20 views
5

Tôi đang tạo một ứng dụng iPhone và muốn hiển thị biểu tượng ở vị trí tiêu đề của thanh điều hướng của tôi. Tôi đã thực hiện một lớp con của UINavigationController và thêm vào dòng sau trong viewDidLoad:titleview trên thanh điều hướng không hiển thị trong dạng xem sau khi phân tách

self.navigationBar.topItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"titlelogo.png"]]; 

(điều này có vẻ như một sự lãng phí cho chỉ một dòng, nhưng tôi đang sử dụng nó ở nhiều nơi và tôi không muốn để sử dụng [xuất hiện UINavigationBar] vì nhiều lý do)

Điều này làm việc tốt cho con ngay lập tức của bộ điều khiển điều hướng - Tôi thấy biểu trưng. Tuy nhiên, khi tôi đẩy khoảng cách sang một chế độ xem khác, biểu tượng không mang theo, mặc dù chúng là (phần tốt nhất của kiến ​​thức của tôi) là một phần của bộ điều khiển điều hướng "giống nhau".

(để tham khảo) -> MyNavigationController -> SomeViewController -> SomeOtherViewController

Tôi cũng đã cố gắng đi sâu vào viewDidLoad của SomeOtherViewController với:

self.navigationController.navigationBar.topItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"titlelogo.png"]]; 

này vẫn không hiển thị biểu tượng.

Sau khi một số poking xung quanh, tôi đã phát hiện ra rằng nếu 1) Tôi không có mà dòng trong viewDidLoad của navigationcontroller và 2) Tôi có dòng thứ hai trong viewDidLoad của SomeOtherViewController, sau đó:

Bắt đầu: Xem SomeViewController . Không có logo. Bấm để đẩy segue: Logo bây giờ xuất hiện trên thanh SomeViewController, trước khi biến mất. Tôi hiện đang xem SomeOtherViewController: không có logo. Nhấp lại: Thanh điều hướng của SomeViewController vẫn có biểu tượng.

Rõ ràng là tôi hiểu nhầm điều gì đó về cách một công cụ điều hướng hoạt động. Ai có thể nói cho tôi biết sửa như thế nào không?

Trả lời

1

Nếu tôi hiểu đúng, bạn cũng có thể làm điều đó với cách tiếp cận khác và chỉ thay thế toàn bộ NavigationBar bằng hình ảnh? Ở đó bạn có thể đặt biểu tượng của bạn.

Vì việc thay đổi toàn bộ NavigationBar khá dễ dàng.

if ([self.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) { 
    [self.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbar.png"] forBarMetrics:UIBarMetricsDefault]; 
} 

Mã này bạn cần phải đặt trong phương pháp viewDidLoad của NavigationController. Sau đó, nó cũng nên được làm việc trong ViewControllers bạn đẩy vào ngăn xếp của NavigationController.

0

Cố gắng sử dụng

self.navigationItem.titleView = yourCustomView; 

istead của

self.navigationController.navigationBar.topItem.titleView = yourCustomView; 

Và đừng chạm self.navigationController.navigationBar.topItem.titleView ở tất cả. Lúc đầu, tôi đã cố gắng đặt cả hai thành số yourCustomView và chế độ xem tùy chỉnh của tôi xuất hiện trong một giây và sau đó đã biến mất Tôi không biết tại đâu :)