ฉันเพิ่มตัวควบคุมทิศทางเพื่อสลับระหว่างมุมมองในแอปของฉัน แต่มุมมองบางอย่างไม่ควรมีปุ่ม 'ย้อนกลับ' (ชื่อก่อนหน้า) ความคิดเห็นเกี่ยวกับวิธีซ่อนปุ่มย้อนกลับ?
ฉันเพิ่มตัวควบคุมทิศทางเพื่อสลับระหว่างมุมมองในแอปของฉัน แต่มุมมองบางอย่างไม่ควรมีปุ่ม 'ย้อนกลับ' (ชื่อก่อนหน้า) ความคิดเห็นเกี่ยวกับวิธีซ่อนปุ่มย้อนกลับ?
คำตอบ:
Objective-C:
self.navigationItem.hidesBackButton = YES;
สวิฟท์:
navigationItem.hidesBackButton = true
self.navigationItem.leftBarButtonItem = nil;
โดย หากคุณตั้ง leftbarbuttonitem explicitely self.navigationItem.leftBarButtonItem = nil;
คุณสามารถใช้ self.navigationItem.hidesBackButton = YES;
จะซ่อนปุ่มย้อนกลับรายการ
วิธีที่ดีที่สุดคือการรวมสิ่งเหล่านี้ดังนั้นมันจะซ่อนปุ่มย้อนกลับแม้ว่าคุณจะตั้งค่าด้วยตนเอง:
self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;
ปุ่มซ่อนด้านหลังพร้อมรหัสร้อง ...
[self.navigationItem setHidesBackButton:YES animated:YES];
หรือ
[self.navigationItem setHidesBackButton:YES];
นอกจากนี้หากคุณมีกำหนดเองUINavigationBar
แล้วลองรหัสร้อง
self.navigationItem.leftBarButtonItem = nil;
ในสวิฟท์ :
เพิ่มสิ่งนี้ไปยังตัวควบคุม
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.setHidesBackButton(true, animated: false)
}
ใช้รหัส:
self.navigationItem.backBarButtonItem=nil;
ในฟังก์ชั่น viewDidLoad ของ UIViewController ใช้รหัส:
self.navigationItem.hidesBackButton = YES;
อย่าลืมว่าคุณต้องโทรหามันบนวัตถุที่มีตัวควบคุม nav ตัวอย่างเช่นหากคุณมีตัวควบคุม nav กดบนตัวควบคุมแถบแท็บด้วย RootViewController การเรียกใช้self.navigationItem.hidesBackButton = YES
บน RootViewController จะไม่ทำอะไรเลย คุณจะต้องโทรจริงself.tabBarController.navigationItem.hidesBackButton = YES
อย่าลืมว่าตอนนี้เรามีรูปแบบการเลื่อนกลับ คุณอาจต้องการลบสิ่งนี้เช่นกัน อย่าลืมเปิดใช้งานอีกครั้งหากจำเป็น
if ([self.navigationItem respondsToSelector:@selector(hidesBackButton)]) {
self.navigationItem.hidesBackButton = YES;
}
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
เพิ่มรหัสนี้ในตัวควบคุมมุมมองของคุณ
UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;
สำหรับฉันไม่มีสิ่งใดที่ดูเหมือนจะทำงานได้ ฉันใช้สตอรีบอร์ดพร้อมมุมมองที่ "ฝังอยู่" ในตัวควบคุมการนำทาง
ฉันอยู่ที่ระดับรหัสเพิ่ม 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];
มันไม่ทำงานสำหรับฉันในทุกกรณีเมื่อฉันตั้งค่า
self.navigationItem.hidesBackButton = YES;
ใน viewWillAppear หรือ ViewDidLoad แต่ทำงานได้อย่างสมบูรณ์แบบเมื่อฉันตั้งใน init ของ viewController
ลองอันนี้ -
self.navigationController?.navigationItem.hidesBackButton = true
ใน c # หรือ Xamarin.ios this.NavigationItem.HidesBackButton = true
navigationItem.leftBarButtonItem = nil
navigationItem.hidesBackButton = true
ถ้าคุณใช้บล็อกรหัสนี้ภายใน didLoad หรือ loadView ทำงาน แต่ไม่ทำงานอย่างสมบูรณ์ถ้าคุณดูอย่างระมัดระวังคุณจะเห็นปุ่มย้อนกลับซ่อนอยู่เมื่อมุมมองของคุณโหลดดูแปลก ๆ
โซลูชั่นที่สมบูรณ์แบบคืออะไร?
เพิ่มส่วนประกอบBarButtonItemจาก componentView (Command + Shift + L)ไปยังแถบนำทาง viewControllers เป้าหมายของคุณ
เลือก BarButtonItem ตั้ง Title = "" จากแผงด้านขวา