Thay đổi tiêu đề điều hướng theo chương trình


186

Tôi có một thanh điều hướng với một tiêu đề. Khi tôi nhấp đúp vào văn bản để đổi tên nó, nó thực sự nói rằng đó là một mục điều hướng, vì vậy nó có thể là như vậy.

Tôi đang cố gắng thay đổi văn bản bằng mã, như:

declare navigation bar as navagationbar here
button stuff {
    navigationbar.text = "title"
}

Đó rõ ràng không phải là mã của tôi, chỉ cho thấy nó sẽ hoạt động như thế nào.

Vì vậy, bất cứ khi nào tôi nhấn nút, tôi muốn tiêu đề thay đổi.

Câu trả lời:


535

Bạn thay đổi tiêu đề bằng cách thay đổi tiêu đề của trình điều khiển xem đang được hiển thị:

viewController.title = "some title"

Thông thường, điều này được thực hiện trong chế độ xem đã tải trên bộ điều khiển xem:

override func viewDidLoad() {
    super.viewDidLoad()
    self.title = "some title"
}

Tuy nhiên, điều này chỉ hoạt động nếu bạn có bộ điều khiển xem của bạn được nhúng trong UINavestionControll. Tôi đánh giá cao đề nghị làm điều này thay vì tạo ra một thanh điều hướng chính mình. Nếu bạn khăng khăng tự tạo một thanh điều hướng, bạn có thể thay đổi tiêu đề bằng cách thực hiện:

navigationBar.topItem.title = "some title"

1
ViewControll.type không có tiêu đề tên thành viên. Đó là lỗi tôi nhận được.
Tăng

2
Bạn không gọi nó trực tiếp trên lớp. Bạn gọi nó trên một thể hiện của một lớp con của UIViewControll
drewag

Vâng, ViewControllerđề cập đến chính lớp học. Bạn cần tham khảo một ví dụ về ViewController. Từ trong một phương thức trên lớp của bạn, chẳng hạn như viewDidLoad, bạn có thể làm như vậy bằng cách sử dụng self. Nếu bạn không biết sự khác biệt giữa một lớp và một thể hiện, tôi khuyên bạn nên tìm hiểu nó là gì. Bài viết này sẽ giúp.
vẽ

Cũng hoạt động như một bùa mê trong Xcode .. chỉ là một thay đổi nhỏ -> self.title = @ "một số tiêu đề";
Tóm tắt

self.title = "một số tiêu đề" làm việc cho tôi. Cảm ơn bạn ! Tôi đã thử 'navigationContoder? .NavestionItem.title = "Một số tiêu đề". thực sự không chắc chắn tại sao nó không hoạt động. (Tôi có một mục điều hướng ở đó, mà tôi đã đặt để hiển thị tiêu đề, ngoài bộ điều khiển điều hướng nhúng). Tôi vẫn nghĩ rằng nó nên hoạt động, nhưng không biết tại sao. Chồng tràn đến giải cứu một lần nữa!
Naishta


13

Mã dưới đây hoạt động với tôi với Xcode 7:

override func viewDidLoad() {        
    super.viewDidLoad()
    self.navigationItem.title = "Your Title"
}

10

Tôi thấy điều này để làm việc:

navigationItem.title = "Title"

Làm thế nào để bạn căn giữa tiêu đề trong một bộ điều khiển xem là con của UINavestionControll? Đối với một số lý do văn bản được căn bên trái. var customTitle = self.navigationController?.visibleViewController?.navigationItem customTitle?.title = "Some Title"
bibscy

5

và nếu bạn cố gắng tạo Navigation Barthủ công thì mã này sẽ giúp bạn

func setNavBarToTheView() {
    let navBar: UINavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 64.0))
    self.view.addSubview(navBar);
    let navItem = UINavigationItem(title: "Camera");
    let doneItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.cancel, target: self, action: #selector(CameraViewController.onClickBack));
    navItem.leftBarButtonItem = doneItem;
    navBar.setItems([navItem], animated: true);
}

4

Thông thường, thực hành tốt nhất là đặt tiêu đề trên UIViewController. Bằng cách này, UINavigationItemcũng được thiết lập. Nói chung, điều này tốt hơn so với việc phân bổ và khởi tạo theo chương trìnhUINavigationBar mà không liên kết với bất cứ điều gì.

Bạn bỏ lỡ một số lợi ích và chức năng UINavigationBarđược thiết kế cho. Đây là một liên kết đến các tài liệu có thể giúp bạn. Nó thảo luận về các thuộc tính khác nhau mà bạn có thể đặt trên thanh thực tế và trênUINavigationItem .

Chỉ cần ghi nhớ:

  1. Bạn mất chức năng nút quay lại (trừ khi bạn tự đi dây)
  2. Cử chỉ "kéo từ bên trái sang vuốt ngược" tích hợp bị mất

UINavigationControllerlà bạn của bạn


4

Câu trả lời đúng cho người sử dụng sẽ là

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.title = "Your Text"
}

3

Swift 3

Tôi đã tạo một lối thoát cho mục thanh tiêu đề điều hướng đi kèm với thanh điều hướng (từ Trình duyệt đối tượng) trong bảng phân cảnh. Sau đó, tôi đã kiện dòng dưới đây:

navigationBarTitleItem.title = "Hello Bar"

2

Nếu bạn muốn thay đổi tiêu đề từ trình điều khiển chế độ xem con của Trình điều khiển xem trang được nhúng trong bộ điều khiển điều hướng, nó sẽ giống như sau:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.parent?.title = "some title"
}

1

Nếu bạn có một NavigationControllernhúng bên trong của một TabBarControllerxem dưới đây:

super.tabBarController?.title = "foobar"

nhập mô tả hình ảnh ở đây

Bạn có thể gỡ lỗi các vấn đề như thế này với các tập lệnh gỡ lỗi. Hãy thử lệnh của Chisel pvc để in mọi chế độ xem / ẩn trên cấu trúc phân cấp.


0

Trong Swift 4:

Swift 4

override func viewDidLoad() {
    super.viewDidLoad()

    self.title = "Your title"
}

Tôi hy vọng nó sẽ giúp, trân trọng!


2
Đây chỉ là một nửa câu trả lời được chấp nhận. Ngoài ra, nếu bạn nói rằng không có gì thay đổi, thì tại sao bạn lại đăng bất cứ điều gì?! Hãy xóa.
Eric Aya

@Moritz bạn là người điều hành hay đại loại như thế? nếu nói Có, tôi sẽ xóa nó, nếu không tôi sẽ không xóa nó.
Radames E. Hernandez

1
Bạn thực sự nói điều đó?, Phía trên tôi có 4 câu trả lời hoàn toàn bằng nhau, vậy tại sao bạn đến với tôi và bảo tôi xóa tôi? Tôi là một người dùng đáng tin cậy hỗ trợ cộng đồng, tôi sẽ không chỉ lặp lại câu trả lời. Tôi chỉ muốn cập nhật câu hỏi này với một phiên bản nhanh chóng được cập nhật.
Radames E. Thoát khỏi

3
Không có gì cập nhật trong câu trả lời của bạn. Đây là mã giống như câu trả lời được chấp nhận, thông thường, điều này được thực hiện trong chế độ xem đã tải phần Phần ...
Eric Aya

0

Tôi thích sử dụng self.navigationItem.title = "Your Title Here"hơn self.title = "Your Title Here"để cung cấp tiêu đề trong thanh điều hướng vì thanh tab cũng sử dụng self.titleđể thay đổi tiêu đề của nó. Bạn nên thử mã sau đây một lần.

Lưu ý: gọi vòng đời siêu xem là cần thiết trước khi bạn thực hiện bất kỳ nội dung nào.

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        setupNavBar()
    }
}

private func setupNavBar() {
    self.navigationItem.title = "Your Title Here"
}

0

Swift 5.1

override func viewDidLoad() {
    super.viewDidLoad()
    navigationItem.title = "What ever you want"
}

0

Swift 5.1

// Đặt tiêu đề NavigationBar theo chương trình và động

Lưu ý: Trước tiên, hãy thêm NavigationContoderItem vào tệp của bạn ViewControllersau đó goto ViewController.swifttệp của họ và chỉ cần Sao chép và Dán tệp này vào viewDidLoad().

navigationItem.title = "Your Title Here"

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.