Làm cách nào để đặt tiêu đề của Thanh điều hướng theo lập trình?


84

Tôi có một Thanh điều hướng trong một dạng xem và tôi muốn thay đổi tiêu đề Mục điều hướng của nó theo chương trình.

Làm thế nào là điều này được thực hiện?

Câu trả lời:


204

Trong UIViewController của bạn

self.navigationItem.title = @"The title";

Có, tôi sẽ chọn điều này vì nó chỉ cập nhật tiêu đề của navigationItem chứ không phải tiêu đề của toolbarItem.
Prakash Raman

30

Phiên bản Swift 3:

Nếu bạn sử dụng thanh điều hướng mà không có bộ điều khiển điều hướng, thì bạn có thể thử cách này:

navigationBar.topItem?.title = "Your Title"

Mong được giúp đỡ.


11

Trong viewDidLoad

  self.title = @"Title";

3
Hai xu của tôi :) Điều này hoạt động, mặc dù nếu vewcontroller là một phần của bộ điều khiển thanh công cụ. Sau đó, tiêu đề của thanh công cụ cũng được cập nhật.
Prakash Raman

7

Từ Tài liệu của Apple :

Cách phổ biến nhất để sử dụng thanh điều hướng là sử dụng bộ điều khiển điều hướng. Bạn cũng có thể sử dụng thanh điều hướng làm đối tượng độc lập trong ứng dụng của mình.

Vì vậy, nếu bạn có UINavigationController, tất cả những gì bạn phải làm để đặt tiêu đề của thanh điều hướng (như đã giải thích trong tất cả các câu trả lời trước)

self.navigationItem.title = @"title";

Nhưng nếu bạn có một thanh điều hướng độc lập được tạo theo chương trình trong một đối tượng của UIViewController, thì Bạn phải thiết lập giao diện ban đầu của thanh điều hướng bằng cách tạo các đối tượng UINavigationItem thích hợp và thêm chúng vào ngăn xếp đối tượng của thanh điều hướng, tức là

  1. Tạo một phiên bản của thanh điều hướng (UINavigationBar)
  2. Tạo một phiên bản của mục thanh điều hướng (UINavigationItem) quản lý các nút và dạng xem được hiển thị trong một đối tượng UINavigationBar. Lưu ý rằng bạn đặt tiêu đề ở bước này.
  3. (Bước tùy chọn) Thêm các nút phải / trái (các phiên bản của UIBarButtonItem) vào mục thanh điều hướng.

Mẫu mã Objective-C cho các bước được đề cập:

UINavigationBar* navbar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 64)];

/* Create navigation item object & set the title of navigation bar. */
UINavigationItem* navItem = [[UINavigationItem alloc] initWithTitle:self.shoppingItem.name];

/* Create left button item. */
UIBarButtonItem* cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(onTapCancel:)];
navItem.leftBarButtonItem = cancelBtn;

/* Create left button item. */
UIBarButtonItem* doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(onTapDone:)];
navItem.rightBarButtonItem = doneBtn;

/* Assign the navigation item to the navigation bar.*/
[navbar setItems:@[navItem]];

/* add navigation bar to the root view.*/
[self.view addSubview:navbar];

Đối với phiên bản Swift của thanh điều hướng độc lập, hãy xem câu trả lời này .


6

Viết mã dưới đây vào viewDidLoadhoặc có thể tốt hơn sẽ ở dướiinitWithNibName:

  self.navigationItem.title = @"title";

Cảm ơn.


6

Bạn cũng có thể sử dụng 👇🏻

[self.navigationController.navigationBar.topItem setTitle:@"Titlet"];

2

Mã này không hoạt động với tôi

self.navigationItem.title = @"Title here";

Nhưng điều này đã hiệu quả.

self.title = "Title Name"

2

Trong viewDidLoad của UIViewController

self.navigationItem.title = "The title";  //In swift 4

hoặc là

bạn có thể chỉ

self.title = "The title"

sẽ làm điều đó

bạn cũng có thể đặt câu lệnh trên trong ứng dụng ủy quyền để sao chép toàn cầu.


0

Sử dụng nó trong phương thức ViewDidLoad

Định dạng :

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

Thí dụ :

self.navigationItem.title = @"Title here";

0

lưu ý rất quan trọng: hãy đảm bảo rằng bạn thực hiện các thay đổi đã đề cập ở trên trong phương thức viewDidLoad của chế độ xem gốc hoặc thanh điều hướng dành cho cha mẹ trong bảng phân cảnh


0

Đôi khi bạn có thể gặp trường hợp bạn đang cập nhật tiêu đề và nó không gây ra bất kỳ ảnh hưởng nào, đây có thể là khi bạn có chế độ xem tùy chỉnh trên topItemđó, do đó bạn có thể muốn cập nhật nó như thế này:(self.navigationController?.navigationBar.topItem?.titleView as? UILabel)?.text = "My Happy New Title"

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.