UINavigationController ที่ไม่มีแถบนำทาง?


117

ฉันมีแอปสากลและในเวอร์ชัน iPad ฉันใช้UISplitViewControllerเพื่อสร้างอินเทอร์เฟซที่คล้ายกับแอป Mail

ฉันประสบปัญหาในการส่งมุมมองรายละเอียดใหม่ดังนั้นฉันจึงตัดสินใจที่จะใช้UINavigationControllerเพื่อให้ฉันสามารถพุชและป๊อปดูได้ตามต้องการ อย่างไรก็ตามฉันไม่ต้องการใช้มุมมองการนำทางหรือแถบเครื่องมือ แต่ไม่ว่าจะทำยังไงฉันก็ซ่อนแถบนำทางไม่ได้

ฉันได้ลองยกเลิกการเลือก "แสดงแถบการนำทาง" ใน IB แล้วและฉันได้ลองตั้งค่าด้วย:

[self.navigationController setNavigationBarHidden:YES];

ในviewDidLoad/ viewDidAppear/ viewWillAppear. ฉันยังได้ลองใช้ในแต่ละมุมมองที่จะผลักดัน ไม่มีอะไรทำงาน

มีบางอย่างที่ฉันขาดหายไปที่นี่? เป็นไปได้ไหมที่จะUINavigationControllerไม่มีแถบเครื่องมือหรือแถบนำทาง?


superclass ของคลาสselfคืออะไร?

คำตอบ:


192

คุณควรจะทำสิ่งต่อไปนี้ได้:

self.navigationController.navigationBar.isHidden = true //Swift 5

โดยที่ self.navigationController คืออินสแตนซ์ของ UINavigationController ดูเหมือนจะใช้ได้ผลสำหรับฉัน แต่ฉันทดสอบสั้น ๆ ก่อนโพสต์สิ่งนี้เท่านั้น


2
ดังนั้นในกรณีของคุณ self.navigationController.navigationBar.hidden = YES;
Ashwin

4
นั่นมัน! แม้ว่าฉันจะเพิ่มว่าฉันสามารถทำเครื่องหมายที่ช่องซ่อนสำหรับแถบเครื่องมือ Nagivation ใน IB แทนที่จะทำผ่านรหัส ขอบคุณ!
DOOManiac

1
ใช่ขอโทษด้วย ฉันควรจะรับทราบข้อเท็จจริงที่ว่าคุณใช้ IB และพูดถึงกล่องที่ซ่อนอยู่แทนที่จะใช้รหัส เมื่อไม่นานมานี้ฉันได้สร้างอินเทอร์เฟซทั้งหมดของฉันโดยใช้โปรแกรมโดยไม่มีไฟล์. xib ดังนั้นฉันจึงตรงไปที่คำตอบของฉัน
Ashwin

5
ฉันเรียกสิ่งนี้ว่าอยู่ใน viewwillapear ในตัวควบคุมมุมมองของฉันแบบนี้- (void)viewWillAppear:(BOOL)animated { self.navigationController.navigationBar.hidden = YES; } และใช้งานได้
Ali

2
navBar ถูกซ่อนอยู่ แต่หน้าจอตัวควบคุมมุมมองของฉันไม่ขยายเป็นเต็มหน้าจอ
ArdenDev

40

หากคุณไม่ต้องการแถบนำทางและคุณต้องการปรับเนื้อหาให้ตรงกับตำแหน่งที่ปกติจะเป็นแถบนำทางคุณควรใช้

self.navigationController.navigationBarHidden = YES;

สิ่งนี้ให้ผลลัพธ์ดังนี้:

ใส่คำอธิบายภาพที่นี่

ในขณะที่self.navigationController.navigationBar.hidden = YES;ให้คุณมีช่องว่างที่ navigationBar ควรอยู่ แบบนี้:

ใส่คำอธิบายภาพที่นี่


ความแตกต่างที่ดีมากเกี่ยวกับความแตกต่างของผลลัพธ์กับ iOS 6 ในขณะที่ iOS 7 ดูเหมือนว่าพื้นที่จะถูกลบออก แต่ฉันจะรอให้คนอื่นตรวจสอบว่าเป็นเช่นนั้น
Alex Zavatone

39

ใน Xcode 4.3.2:

  1. เลือกตัวควบคุมการนำทางในกระดานเรื่องราว
  2. เลือก Attributes Inspector ในแผงยูทิลิตี้ (ขวา)
  3. ภายใต้หมวดตัวควบคุมการนำทางคุณมีช่องทำเครื่องหมายสองช่อง:

    [] แสดงแถบการนำทาง

    [] แสดง Toolbar

ทำงานให้ฉัน ...


8

สวิฟต์ 4

ฉันซ่อนไว้ใน viewWillAppear

     override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        self.navigationController?.isNavigationBarHidden = true;
    }

จากนั้นคุณสามารถใส่กลับได้เมื่อคุณกดปุ่มต่อ (หากคุณต้องการให้ปุ่มย้อนกลับในมุมมองถัดไป)

     override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
     {
        self.navigationController?.isNavigationBarHidden = false;
     }

3

Swift 3 โดยทางโปรแกรม

self.navigationController.isNavigationBarHidden = true

หรือ

self.navigationController.navigationBar.isHidden = true

หมายเหตุ: ฉันไม่เห็นความแตกต่างระหว่างสองวิธีนี้ในการทดสอบบน iOS 10


1

คำตอบทั้งหมดนี้ยังคงเว้นช่องว่างที่ด้านบนสำหรับแถบสถานะ - เพิ่มบรรทัดนี้เพื่อลบออกเช่นกัน:

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