จะตั้งชื่อแถบนำทางโดยใช้โปรแกรมได้อย่างไร?


86

ฉันมีแถบนำทางในมุมมองและฉันต้องการเปลี่ยนชื่อรายการการนำทางโดยใช้โปรแกรม

วิธีนี้ทำได้อย่างไร?

คำตอบ:


207

ใน UIViewController ของคุณ

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

ใช่ฉันจะเลือกสิ่งนี้เพราะมันอัปเดตเฉพาะชื่อของ navigationItem ไม่ใช่ชื่อของ toolbarItem
Prakash Raman

30

เวอร์ชัน Swift 3:

หากคุณใช้แถบนำทางโดยไม่มีตัวควบคุมการนำทางคุณสามารถลองสิ่งนี้:

navigationBar.topItem?.title = "Your Title"

หวังว่าจะได้รับความช่วยเหลือ


11

ใน viewDidLoad

  self.title = @"Title";

3
สองเซ็นต์ของฉัน :) สิ่งนี้ใช้ได้แม้ว่า vewcontroller เป็นส่วนหนึ่งของตัวควบคุมแถบเครื่องมือ จากนั้นชื่อแถบเครื่องมือจะได้รับการอัปเดตด้วย
Prakash Raman

7

จากเอกสารของ Apple :

วิธีทั่วไปในการใช้แถบนำทางคือการใช้ตัวควบคุมการนำทาง คุณยังสามารถใช้แถบนำทางเป็นวัตถุเดี่ยวในแอปของคุณ

ดังนั้นหากคุณมี UINavigationController สิ่งที่คุณต้องทำทั้งหมดเพื่อตั้งชื่อของแถบนำทาง (ตามที่อธิบายไว้ในคำตอบก่อนหน้านี้ทั้งหมด)

self.navigationItem.title = @"title";

แต่ถ้าคุณมีแถบนำทางแบบสแตนด์อโลนที่สร้างขึ้นโดยใช้โปรแกรมภายในออบเจ็กต์ของ UIViewController คุณต้องตั้งค่าลักษณะเริ่มต้นของแถบการนำทางโดยการสร้างอ็อบเจ็กต์ UINavigationItem ที่เหมาะสมและเพิ่มลงในสแต็กวัตถุแถบการนำทางเช่น

  1. สร้างอินสแตนซ์ของแถบนำทาง (UINavigationBar)
  2. สร้างอินสแตนซ์ของรายการแถบการนำทาง (UINavigationItem) ที่จัดการปุ่มและมุมมองที่จะแสดงในวัตถุ UINavigationBar โปรดทราบว่าคุณตั้งชื่อเรื่องในขั้นตอนนี้
  3. (ขั้นตอนเสริม) เพิ่มปุ่มขวา / ซ้าย (อินสแตนซ์ของ UIBarButtonItem) ในรายการแถบนำทาง

ตัวอย่าง Objective-C Code สำหรับขั้นตอนที่กล่าวถึง:

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];

สำหรับแถบนำทางแบบสแตนด์อโลนเวอร์ชัน Swift โปรดดูคำตอบนี้


6

เขียนโค้ดด้านล่างviewDidLoadหรืออาจจะดีกว่าจะอยู่ภายใต้initWithNibName:

  self.navigationItem.title = @"title";

ขอบคุณ.




2

ในมุมมอง UIViewController ของคุณ

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

หรือ

คุณสามารถทำได้

self.title = "The title"

จะทำเคล็ดลับ

นอกจากนี้คุณยังสามารถใส่ข้อความข้างต้นในการมอบหมายแอปเพื่อทำซ้ำทั่วโลก


0

ใช้ในเมธอด ViewDidLoad

รูปแบบ :

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

ตัวอย่าง:

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

0

หมายเหตุสำคัญมาก: ตรวจสอบให้แน่ใจว่าคุณได้ทำการเปลี่ยนแปลงที่กล่าวถึงข้างต้นในเมธอด viewDidLoad ของมุมมองผู้ปกครองหรือแถบนำทางผู้ปกครองในสตอรีบอร์ด


0

บางครั้งคุณอาจได้รับกรณีที่คุณกำลังอัปเดตชื่อและไม่ก่อให้เกิดผลกระทบใด ๆ ซึ่งอาจเกิดขึ้นเมื่อคุณมีมุมมองแบบกำหนดเองtopItemดังนั้นคุณอาจต้องการอัปเดตดังนี้:(self.navigationController?.navigationBar.topItem?.titleView as? UILabel)?.text = "My Happy New Title"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.