2012-06-25 44 views
5

Sự khác biệt giữa self.navigationController.navigationItem và self.navigationItem là gì? Tôi đang sử dụng một UINavigationController trong suốt ứng dụng và khi tôi sử dụng self.navigationController.navigationItem.rightBarButtonItems, trong một trong các phương thức viewDidLoad của một trong các viewControllers, mảng là rỗng. Tuy nhiên nếu tôi sử dụng self.navigationItem.rightBarButtonItems, tôi thấy các mục nút thanh của tôi. Sự khác nhau giữa hai cuộc gọi là gì? Cảm ơn!Sự khác biệt giữa self.navigationController.navigationItem và self.navigationItem

Trả lời

5

A UINavigationController là một phân lớp của UIViewController. Như vậy, nó có thuộc tính độc lập riêng của nó navigationItem, nó được thừa kế từ UIViewController. Bạn nên bỏ qua thuộc tính này, vì nó sẽ chỉ được sử dụng nếu bạn nhúng một bộ điều khiển điều hướng bên trong một bộ điều khiển điều hướng khác (mà không ai trong tâm trí của họ sẽ làm).

0

Từ các tài liệu của UIViewController+UINavigationControllerItem, xem dưới đây, chúng ta nên sử dụng các navigationItem sở hữu trực tiếp trên bộ điều khiển xem:

// Created on-demand so that a view controller may customize its navigation appearance. 
@property(nonatomic,readonly,strong) UINavigationItem *navigationItem; 

UINavigationController cũng có một tài sản kể từ khi nó được kế thừa từ UIViewControllernavigationItem, nhưng đặt nó thắng' t ảnh hưởng đến thuộc tính điều hướng của bộ điều khiển chế độ xem.

Từ một thử nghiệm nhanh, chúng ta có thể thấy rằng các mặt hàng này chuyển hướng không bằng nhau hoặc là:

(lldb) po self.navigationItem 
<UINavigationItem: 0x7f865c99ec50> 

(lldb) expr -- @import UIKit 
(lldb) po self.navigationController.navigationItem 
<UINavigationItem: 0x7f865c811740> 
Các vấn đề liên quan