2011-01-12 29 views
51

Tôi có một bộ điều khiển chế độ xem có chế độ xem đến từ XIB. Tôi muốn nó có giao diện giống như phần còn lại của ứng dụng dựa trên điều hướng của tôi, nhưng đó không phải là chế độ xem được đẩy vào ngăn điều hướng, nó được trình bày một cách bình thường. Tôi kéo một UINavigationBar vào và làm cho nó một lối thoát, nhưng nó không có một tài sản tiêu đề để thiết lập. Tôi có hai trường có thể hiển thị chế độ xem phương thức này và tôi muốn tiêu đề được đặt khác nhau tùy thuộc vào trường nào tạo chế độ xem phương thức.Đặt tiêu đề của Thanh Điều hướng được tạo trong Bộ dựng Giao diện

Trả lời

90

UINavigationBar quản lý một ngăn xếp UINavigationItem s giống như một người quản lý UINavigationController ngăn xếp UIViewController s. Để đặt nội dung hiển thị trực tiếp, bạn nên sử dụng hoặc pushNavigationItem:animated: hoặc setItems:animated: bằng cách sử dụng navigationItem của trình điều khiển chế độ xem mà bạn muốn thanh phản ánh.

ví dụ:

self.navigationItem.title = @"A custom title"; 
[self.navigationBar pushNavigationItem:self.navigationItem animated:NO]; 

Đoạn mã trên, nơi bạn có một tài sản navigationBar mà tham chiếu thanh điều hướng độc lập.

Nếu bạn không muốn tự mình quản lý, bạn có thể làm như mplappert đề xuất và lồng điều khiển chế độ xem của bạn (không có độc lập UINavigationBar) trong UINavigationController và trình bày bộ điều khiển điều hướng thay cho bộ điều khiển chế độ xem của bạn.

-1

Chỉ cần đặt UIViewController của bạn vào ngăn xếp bộ điều khiển chế độ xem UINavigationController s mới và trình bày điều khiển điều khiển đó một cách bình thường.

63

Cũng tìm thấy cách này dễ dàng hơn nếu bạn đã xác định một UINavigationBar trong IB của bạn. Giả sử self.navigationBar là IBOutlet bạn:

self.navigationBar.topItem.title = title; 
+1

Đây là câu trả lời đúng. – Fengson

+0

Điều này làm việc cho tôi. –

+1

trong trường hợp của tôi: self.navigationController.navigationBar.topItem.title = @ "title" –

8

(Sử dụng XCode 4.5.2) Tìm thấy một phương pháp mà làm việc trực tiếp trong giao diện Builder - mà không cần thiết trong mã.

Với đối tượng ViewController được chọn trong (IB), bên dưới Trình kiểm tra nhận dạng có một phần có nhãn "Thuộc tính thời gian chạy do người dùng xác định". Tôi đã thêm keyPath "title" của loại String và đặt nó thành giá trị tôi muốn.

Đã thử nghiệm và hoạt động khi được đẩy lên ngăn xếp Bộ điều khiển Nav và khi được mở theo phương thức modally (với Bộ điều khiển Modal Nav).

+1

Cách bản địa hóa giá trị này? – Arvis

0

trong file .h của tôi

  • kéo trẻ em của mặt hàng đó chuyển hướng từ các kịch bản vào file .h

  • Đặt tên nó là "navigationBarTitle"

trong tôi .m file

  • Đã thêm self.navigationBarTitle.title = @ "Một số Tiêu đề";
4

viewcontroller.h tập tin trong tạo IBOutlet của mục navigation

 @property (weak, nonatomic) IBOutlet UINavigationItem *navigationBarTitle; 

- Đặt tên nó là "navigationBarTitle"

trong tập tin viewcontroller.m ở thêm mã trong siêu viewDidLoad

 self.navigationBarTitle.title = @"Favorites"; 

kết nối storybord trong việc điều khiển mục thanh để điều hướngBarTitle.

0

Dưới đây là cách đơn giản nhất:

[[[self.navigationController navigationBar] topItem] setTitle:@"The Title"]; 
0

bạn có thể sử dụng thanh điều hướng hiện với mã sau đây

self.navigationController?.navigationBar.topItem?.title = "Calender" 
Các vấn đề liên quan