Swift - จะซ่อนปุ่มย้อนกลับในรายการการนำทางได้อย่างไร?


105

ตอนนี้ฉันมีตัวควบคุมมุมมองสองตัว ปัญหาของฉันคือฉันไม่รู้วิธีซ่อนปุ่มย้อนกลับหลังจากเปลี่ยนไปใช้ตัวควบคุมมุมมองที่สอง การอ้างอิงส่วนใหญ่ที่ฉันพบอยู่ใน Objective-C ฉันจะเขียนโค้ดใน Swift ได้อย่างไร

ซ่อนรหัสปุ่มย้อนกลับใน Objective-C

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

คำตอบ:


376

ตามเอกสารสำหรับUINavigationItem:

self.navigationItem.setHidesBackButton(true, animated: true)

31
ความเย่อหยิ่งนั้นฟรี
Greg

59
มันอาจจะทำให้คุณกลัว @ Paulw11 แต่ความจริงคือการพิมพ์ธรรมดาปุ่ม "สวิฟท์ซ่อนกลับ" ใน Google และมาที่นี่ - เหมือนฉันก็ไม่ได้ - เป็นตันเร็วกว่าการไถผ่านรีมของข้อความในเอกสารอย่างเป็นทางการ
Joseph Beuys 'Mum

4
ในขณะที่ชื่อของปุ่มย้อนกลับถูกกำหนดไว้ในตัวควบคุมมุมมองแรกอาจเป็นเรื่องน่าสนใจที่จะสังเกตว่ารหัสที่จะซ่อนจะต้องนำไปใช้ในตัวควบคุมมุมมองที่สอง (ปุ่มที่แสดงปุ่ม)
XLE_22

40

ในกรณีที่คุณใช้UITabBarController:

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    self.tabBarController?.navigationItem.hidesBackButton = true
}

เหมือนกันสำหรับฉัน แต่ฉันอยากจะเข้าใจว่าทำไม ไม่มีใครรู้ว่าอะไรคือความแตกต่างระหว่างคำตอบที่ยอมรับและแนวทางนี้? สิ่งเดียวที่ฉันคิดได้คือรูปแบบการสืบทอดเทียบกับเวอร์ชันคงที่ของแถบนำทาง
Helmut Granda

1
@HelmutGranda หากคุณสังเกตเห็นว่า Bruno ใช้ Tab Bar Controller นั่นคือความแตกต่าง ในกรณีของคำตอบที่ยอมรับ VC มักจะฝังอยู่ในตัวควบคุมการนำทาง
cloudcal

@cloudcal ฉันไม่ได้ใช้ tabBar แต่ทั้งสองคำตอบได้ผล ทั้งสองคนซ่อนปุ่มย้อนกลับ ฉันคิดว่าพวกเขาจะทำงานแตกต่างกันถ้า viewController อยู่บนหน้าจอจากนั้นฉันต้องการซ่อนปุ่มย้อนกลับ อีกครั้งที่ทั้งคู่ทำเหมือนกัน ฉันไม่พบความแตกต่างระหว่างพวกเขา ฉันกำลังบอกว่าคำตอบของ Bruno ไม่ถูกต้อง แต่สำหรับการนำทางที่บริสุทธิ์นั้นไม่ได้สร้างความแตกต่าง ฉันยังไม่ได้ลอง tabBarController
Honey

21

รวดเร็ว

// remove left buttons (in case you added some)
 self.navigationItem.leftBarButtonItems = []
// hide the default back buttons
 self.navigationItem.hidesBackButton = true

เป็นที่ชัดเจนว่า navigationItem.hidesBackButton = true เป็นคำตอบที่ถูกต้อง หากมีปุ่มด้านซ้ายซึ่งอาจเป็นเช่นนั้นนี่เป็นคำตอบที่ถูกต้องที่สุดและควรถือเป็นคำตอบที่สมบูรณ์กว่า
truedat101

self.navigationItem.hidesBackButton = trueมันทำงานได้ตามที่คาดไว้
Shahabuddin Vansiwala

ในกรณีของฉันกับ navigationControllers หลายตัวช่วยได้เท่านั้น: self.navigationItem.leftBarButtonItems = []
Oleksandr



0

นี่คือคำตอบในเวอร์ชัน

สวิฟต์ 5

ที่คุณสามารถใช้ได้จากสตอรี่บอร์ด:

// MARK: - Hiding Back Button

extension UINavigationItem {

    /// A Boolean value that determines whether the back button is hidden.
    ///
    /// When set to `true`, the back button is hidden when this navigation item
    /// is the top item. This is true regardless of the value in the
    /// `leftItemsSupplementBackButton` property. When set to `false`, the back button
    /// is shown if it is still present. (It can be replaced by values in either
    /// the `leftBarButtonItem` or `leftBarButtonItems` properties.) The default value is `false`.
    @IBInspectable var hideBackButton: Bool {
        get { hidesBackButton }
        set { hidesBackButton = newValue }
    }
}

ทุกรายการการนำทางของตัวควบคุมมุมมองจะมีคุณสมบัติใหม่นี้ในส่วนบนสุดของตัวตรวจสอบแอตทริบิวต์


0

ที่เหมาะกับฉันใน Swift 5 อย่างมีเสน่ห์เพียงแค่เพิ่มเข้าไปใน viewDidLoad () ของคุณ

self.navigationItem.setHidesBackButton(true, animated: true)


-4

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

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

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