วิธีซ่อนปุ่ม 'ย้อนกลับ' บนแถบนำทางบน iPhone


315

ฉันเพิ่มตัวควบคุมทิศทางเพื่อสลับระหว่างมุมมองในแอปของฉัน แต่มุมมองบางอย่างไม่ควรมีปุ่ม 'ย้อนกลับ' (ชื่อก่อนหน้า) ความคิดเห็นเกี่ยวกับวิธีซ่อนปุ่มย้อนกลับ?

คำตอบ:


812

Objective-C:
self.navigationItem.hidesBackButton = YES;

สวิฟท์:
navigationItem.hidesBackButton = true


@ user8170 วิธีซ่อน barbuttonitem บนแถบนำทาง .. ?
rockey

9
คุณไม่สามารถซ่อน backbutton self.navigationItem.leftBarButtonItem = nil;โดย หากคุณตั้ง leftbarbuttonitem explicitely self.navigationItem.leftBarButtonItem = nil;คุณสามารถใช้ self.navigationItem.hidesBackButton = YES;จะซ่อนปุ่มย้อนกลับรายการ
rakeshNS

1
ใน iOS 7, self.navigationItem.leftBarButtonItem = nil; ไม่ส่งผลกระทบต่อปุ่มย้อนกลับเมื่อออกจาก viewDidLoad, viewWillAppear หรือ viewDidAppear บรรทัดของรหัสนี้ทำงานภายใน viewdidLoad: self.navigationItem.hidesBackButton = YES;
Alex Zavatone

2
ไม่แน่ใจว่าสิ่งนี้ช่วยได้หรือไม่ แต่ 'ตัวเอง' จะเป็นตัวควบคุมมุมมองที่แสดงอยู่ด้านบนสุดของตัวควบคุมทิศทาง
Kunal Balani

self.navigationItem.hidesBackButton = YES; ใช้ได้กับฉันใน viewDidLoad, iOS 7
leukosaima

38

วิธีที่ดีที่สุดคือการรวมสิ่งเหล่านี้ดังนั้นมันจะซ่อนปุ่มย้อนกลับแม้ว่าคุณจะตั้งค่าด้วยตนเอง:

self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;

6
เพื่อตอบ user716216 เขาอธิบายในคำอธิบายประโยคเดียว รหัสบรรทัดที่สองคือสิ่งที่ใช้ได้กับกรณีเริ่มต้น บรรทัดแรกของรหัสจะใช้งานได้หากคุณสร้างและเพิ่มปุ่มด้วยตนเอง
Alex Zavatone

21

ปุ่มซ่อนด้านหลังพร้อมรหัสร้อง ...

[self.navigationItem setHidesBackButton:YES animated:YES];

หรือ

[self.navigationItem setHidesBackButton:YES];

นอกจากนี้หากคุณมีกำหนดเองUINavigationBarแล้วลองรหัสร้อง

self.navigationItem.leftBarButtonItem = nil;

ในชั้นเรียนใด ๆ เมื่อคุณใช้รหัสนั้นจากนั้นปุ่มย้อนกลับของแถบนำทางในชั้นเรียนนั้นจะซ่อน ...
Paras Joshi




2

อย่าลืมว่าคุณต้องโทรหามันบนวัตถุที่มีตัวควบคุม nav ตัวอย่างเช่นหากคุณมีตัวควบคุม nav กดบนตัวควบคุมแถบแท็บด้วย RootViewController การเรียกใช้self.navigationItem.hidesBackButton = YESบน RootViewController จะไม่ทำอะไรเลย คุณจะต้องโทรจริงself.tabBarController.navigationItem.hidesBackButton = YES


2

อย่าลืมว่าตอนนี้เรามีรูปแบบการเลื่อนกลับ คุณอาจต้องการลบสิ่งนี้เช่นกัน อย่าลืมเปิดใช้งานอีกครั้งหากจำเป็น

if ([self.navigationItem respondsToSelector:@selector(hidesBackButton)]) {
    self.navigationItem.hidesBackButton = YES;
}

if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
    self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}

1

เพิ่มรหัสนี้ในตัวควบคุมมุมมองของคุณ

UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;

1

สำหรับฉันไม่มีสิ่งใดที่ดูเหมือนจะทำงานได้ ฉันใช้สตอรีบอร์ดพร้อมมุมมองที่ "ฝังอยู่" ในตัวควบคุมการนำทาง

ฉันอยู่ที่ระดับรหัสเพิ่ม menuItems ของฉันและด้วยเหตุผลบางอย่าง "backButton" จะปรากฏเมื่อมองเห็นการดีบั๊กลำดับชั้นการมองเห็นและไอคอน menuItem ของฉันจะแสดงใต้ปุ่ม "ย้อนกลับ" ที่มองไม่เห็น

ฉันลองการตั้งค่าตามที่แนะนำในวิธีการเชื่อมต่อที่หลากหลายและไม่มีผลกระทบ จากนั้นฉันก็ลองวิธีที่โหดร้ายและย้ำข้ามมุมมองย่อยซึ่งก็ไม่มีผลเช่นกัน

ฉันตรวจสอบขนาดไอคอนของฉันและดูเหมือนว่าจะโอเค หลังจากอ้างถึงเขาแอปเปิ้ล Human Interface Guideline ฉันยืนยันว่าไอคอนของฉันถูกต้อง (เล็กลง 1 พิกเซลในกรณีของฉัน 24px 48px 72px)

ส่วนที่แปลกที่สุดคือการแก้ไขจริง ...

เมื่อเพิ่มรายการ BarButton ให้ชื่อกับตัวละครอย่างน้อยหนึ่งตัวในกรณีของฉันจะมีช่องว่าง

ความหวังนี้ช่วยใครบางคน

//left menu - the title must have a space
UIBarButtonItem *leftButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " <--THE FIX 
                                                                    style:UIBarButtonItemStylePlain
                                                                  target:self
                                                                  action:@selector(showMenu)];
leftButtonItem.image = [UIImage imageNamed:@"ic_menu"];

[self.navigationItem setLeftBarButtonItem:leftButtonItem];

1

มันไม่ทำงานสำหรับฉันในทุกกรณีเมื่อฉันตั้งค่า

self.navigationItem.hidesBackButton = YES;

ใน viewWillAppear หรือ ViewDidLoad แต่ทำงานได้อย่างสมบูรณ์แบบเมื่อฉันตั้งใน init ของ viewController




0
navigationItem.leftBarButtonItem = nil
navigationItem.hidesBackButton = true

ถ้าคุณใช้บล็อกรหัสนี้ภายใน didLoad หรือ loadView ทำงาน แต่ไม่ทำงานอย่างสมบูรณ์ถ้าคุณดูอย่างระมัดระวังคุณจะเห็นปุ่มย้อนกลับซ่อนอยู่เมื่อมุมมองของคุณโหลดดูแปลก ๆ

โซลูชั่นที่สมบูรณ์แบบคืออะไร?

เพิ่มส่วนประกอบBarButtonItemจาก componentView (Command + Shift + L)ไปยังแถบนำทาง viewControllers เป้าหมายของคุณ

เลือก BarButtonItem ตั้ง Title = "" จากแผงด้านขวา

ป้อนคำอธิบายรูปภาพที่นี่

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