2013-08-07 38 views
8

Tôi có một ứng dụng đang hoạt động là ứng dụng dựa trên thanh tabbarcontroller. Khung nhìn đầu tiên là một uitableviewcontroller. Tất cả 3 tab đều có thanh điều hướng ở trên cùng, mà tôi đã thêm từ thư viện đối tượng. Đây là những gì ứng dụng trông giống như:Tại sao thêm lần xem hình ảnh vào thanh điều hướng trong bảng phân cảnh xóa thanh điều hướng?

Original UITableViewController in first tab with UINavbar

Sau đó, tôi muốn thiết lập các hình ảnh trên navbar như một biểu tượng làm trung tâm. Vì vậy, tôi nhìn quanh SO và thấy mã mà trông như thế này:

UIImage *image = [UIImage imageNamed:@"icon57.png"]; 
UIImageView *imageView = [[UIImageView alloc] initWithImage: image]; 
self.navigationItem.titleView = imageView; 

hoặc

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"icon57.png"] forBarMetrics:UIBarMetricsDefault]; 

Nhưng nó làm việc. Tôi chỉ có một thanh điều hướng màu trắng trống. Vì vậy, tôi quyết định thêm một UIImageView để thanh điều hướng bằng cách kéo nó từ thư viện đối tượng nhưng đối với một số lý do nó làm cho navbar biến mất và tôi kết thúc với điều này:

After adding UIImageView to UINavBar

Tại sao điều này xảy ra?

Trả lời

21

Cách bạn đang thực hiện nó không được hỗ trợ trong Trình tạo giao diện. Tôi sẽ khuyến khích bạn file a radar hỗ trợ thực hiện điều đó. Bạn có thể thực hiện điều này thông qua hai cách khác nhau, một trong các mã, một cách khác trong IB.

Qua Interface Builder

Bạn có thể kéo một trường hợp UIView từ thư viện đối tượng và thả nó vào trung tâm của thanh nav. Thao tác này sẽ đặt chế độ xem trong khu vực tiêu đề của thanh. Sau đó, bạn có thể lấy một phiên bản UIImageView và thêm nó làm chế độ xem phụ của chế độ xem mà bạn vừa thêm.

Qua Mã

Bạn có thể đặt UIImageView qua mã, sử dụng titleView tài sản của mục navigation controller quan điểm của bạn:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UIImage *logo = [UIImage imageNamed:@"logo.png"]; 
    self.navigationItem.titleView = [[UIImageView alloc] initWithImage:logo]; 
} 

EDIT:

Để cài đặt nó trên phía bên trái, bạn sẽ phải bao bọc chế độ xem hình ảnh trong một UIBarButtonItem. Bạn có thể làm điều đó trong IB bằng cách sử dụng quy trình tương tự được mô tả ở trên hoặc bằng mã như sau:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UIImage *logo = [UIImage imageNamed:@"logo.png"]; 
    UIImageView *imageView = [[UIImageView alloc] initWithImage:logo];  
    UIBarButtonItem *imageButton = [[UIBarButtonItem alloc] initWithCustomView:imageView]; 

    self.navigationItem.leftBarButtonItem = imageButton; 
} 
+0

Ok, chỉ một điều cuối cùng. Làm thế nào để làm cho nó được ở phía bên trái của thanh và không phải ở trung tâm? Đã cập nhật – marciokoko

+0

@marciokoko. –

+0

Một nghi ngờ cuối cùng, kể từ khi tôi thả một thanh UINavigation vào UIViewController của tôi, bên trong một uitabbarcontroller, để có được mã làm việc, tôi cần phải có được thanh dẫn hướng trong mã đầu tiên, phải không? – marciokoko