ข้อความปุ่มย้อนกลับ Swift แปลก ๆ ใน iPhone Plus

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

โปรดดูที่ภาพหน้าจอของฉัน ข้อความ "ด้านหลัง" สีน้ำเงินจะแสดงบน iphone plus เสมอ (6s plus, 7 plus สำหรับทั้งเครื่องจำลองและอุปกรณ์จริง) มันไม่แสดงบน iPhone หน้าจอเล็ก ฉันพยายามหลายวิธีในการซ่อน/เปลี่ยนแปลงจากคอนโทรลเลอร์ปัจจุบัน/ก่อนหน้า แต่ก็ไม่มีโชค

เหตุใดจึงใช้งานได้กับ iPhone ขนาดเล็กแต่ใช้ไม่ได้กับ iPhone รุ่นบวก

ใครสามารถช่วยฉันได้บ้าง:( ขอบคุณ

นี่คือรหัส:

@IBAction func filter(_ sender: Any) {
    let view:FilterViewController = self.storyboard?.instantiateViewController(withIdentifier: "FilterViewController") as! FilterViewController
    view.superVC = self
    view.currentFilter = currentFilter
    self.setLeftCloseNavigation()
    self.navigationController?.pushViewController(view, animated: true)
}

func setLeftCloseNavigation(){
    self.navigationController?.navigationBar.backgroundColor = UIColor.clear
    self.navigationController?.navigationBar.isTranslucent = true
    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
    self.navigationController?.navigationBar.layer.mask = nil

    self.navigationController?.navigationBar.backIndicatorImage = UIImage(named: "icon_close")?.withRenderingMode(.alwaysOriginal)
    self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage(named: "icon_close")?.withRenderingMode(.alwaysOriginal)
    navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
}

และนี่คือ viewDidLoad ในคอนโทรลเลอร์ที่ถูกพุช:

override func viewDidLoad() {
    super.viewDidLoad()
    statusBar = UIColor.black
    setResetNavigation() }

func setResetNavigation(){
    navigationItem.hidesBackButton = false

    let skipButton = UIButton(frame: CGRect(x: 0, y: 0, width: 70, height: 30))
    skipButton.setTitle("Reset all".localized(), for: .normal)
    skipButton.setTitleColor(UIColor.black, for: .normal)
    skipButton.titleLabel?.font = UIFont(name: "HJGothamMedium", size: 16)
    skipButton.addTarget(self, action: #selector(resetAllClicked), for: .touchUpInside)
    let skip = UIBarButtonItem(customView: skipButton)
    navigationItem.rightBarButtonItem = skip
}

นี่คือลำดับชั้นการดู

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


person bui manhcuong    schedule 25.04.2017    source แหล่งที่มา
comment
คุณช่วยแสดงโค้ดหน่อยได้ไหม   -  person Bhupat Bheda    schedule 25.04.2017
comment
ตรวจสอบมุมมองของคุณในกระดานเรื่องราวและลบปุ่มนั้นออก   -  person KKRocks    schedule 25.04.2017
comment
นี่คือปัจจุบัน ViewController หรือไม่   -  person KKRocks    schedule 25.04.2017
comment
ไม่ @KKRocks นี่คือตัวควบคุมมุมมองหลังจากกด   -  person bui manhcuong    schedule 25.04.2017
comment
@Bhupat ฉันเพิ่มโค้ดบางส่วน   -  person bui manhcuong    schedule 25.04.2017


คำตอบ (6)


เพิ่มฟังก์ชันนี้:

   override func viewDidAppear(_ animated: Bool) {
          setResetNavigation()
          self.navigationController?.navigationBar.backItem?.title = ""
    }

แถบนำทางใน iPhone 7S

person Harshil Kotecha    schedule 25.04.2017
comment
ขอบคุณ แต่ฉันไม่ต้องการลบมัน แค่อยากลบข้อความเท่านั้น - person bui manhcuong; 25.04.2017
comment
ใช่ ฉันก็ลองวิธีนี้เหมือนกัน มันใช้งานได้กับ iPhone ขนาดเล็ก แต่ไม่ใช่ iPhone บวก :( - person bui manhcuong; 25.04.2017
comment
แค่นาทีเดียว ฉันลองสิ่งนี้ใน 7 วินาที - person Harshil Kotecha; 25.04.2017
comment
ใช่ ฉันใช้เลย์เอาต์อัตโนมัติ นี่คือ FilterViewController ถูกผลักจากคอนโทรลเลอร์ที่เป็นลูกของ tabBarController - person bui manhcuong; 25.04.2017
comment
คุณให้ TeamViewer กับฉันได้ไหม - person Harshil Kotecha; 25.04.2017
comment
ฉันคิดว่าปัญหาในเลย์เอาต์อัตโนมัติของคุณ - person Harshil Kotecha; 25.04.2017
comment
จะเกิดอะไรขึ้นเมื่อคุณตรวจสอบปุ่ม iPhone 7 ซ่อนอยู่ด้วย? - person Harshil Kotecha; 25.04.2017
comment
ฉันเชิญคุณใน Hangout ฉันก็อยู่ที่ออฟฟิศเหมือนกัน - person bui manhcuong; 25.04.2017

ลองสิ่งนี้

 self.navigationItem.hidesBackButton = true

หรือตรวจสอบสตอรี่บอร์ดของคุณ มันจะยังคงอยู่

person Lalit kumar    schedule 25.04.2017
comment
ขอบใจนะ แต่ฉันไม่อยากซ่อน แค่ต้องการลบข้อความออก - person bui manhcuong; 25.04.2017

ใช้บรรทัดด้านล่างเพื่อลบข้อความ

navigationController?.navigationBar.topItem?.title = ""
person harshal jadhav    schedule 25.04.2017
comment
ขอบคุณ ฉันพยายามแล้ว แต่มันใช้งานไม่ได้ :( ฉันวางสิ่งนี้ไว้ในคอนโทรลเลอร์ก่อนหน้า (ก่อนกด) และในคอนโทรลเลอร์การนำเสนอ (viewdidload, viewdidappear) - person bui manhcuong; 25.04.2017
comment
กากบาทนั้นคืออะไรหากเป็นปุ่มดูว่าคุณใส่ชื่อกลับไปที่ปุ่มนั้นโดยไม่ตั้งใจพร้อมกับรูปภาพกากบาทหรือไม่ - person harshal jadhav; 25.04.2017

คุณสามารถตรวจสอบลำดับชั้น UI ของคุณได้ และหากพบมุมมองที่เกี่ยวข้อง ให้ลบมุมมองนั้นออก :

คุณยังสามารถเรียกใช้ดีบักเกอร์มุมมองได้โดยเลือกมุมมองลำดับชั้น UI จากเมนูตัวเลือกมุมมองกระบวนการในตัวนำทางการดีบัก หรือโดยการเลือก ดีบัก > ดูการดีบัก > ลำดับชั้นการจับภาพ

person KKRocks    schedule 25.04.2017
comment
โปรดดูภาพหน้าจอของลำดับชั้นการดูที่ฉันเพิ่งเพิ่ม - person bui manhcuong; 25.04.2017

หากต้องการซ่อนข้อความด้านหลัง คุณต้องตั้งชื่อรายการการนำทางเป็นอักขระเว้นวรรคบนตัวควบคุมมุมมองที่ผลักตัวควบคุมมุมมองที่นำเสนอ:

self.navigationItem.title = " "

โปรดทราบว่าคุณต้องตั้งค่าไว้ในตัวควบคุมมุมมองก่อนหน้าและไม่ใช่ตัวควบคุมด้านบนสุด นอกจากนี้คุณต้องตั้งค่าอักขระช่องว่างและไม่ใช่สตริงว่าง !!!

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

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

person Zell B.    schedule 25.04.2017

จากโค้ดด้านล่าง คุณสามารถตั้งค่าสีข้อความ backButton เป็นสีใดก็ได้ที่คุณต้องการ คุณสามารถตั้งค่า backButton เป็น clear textColor ได้เลย จึงไม่ปรากฏให้เห็นเมื่อปรากฏ

 UIBarButtonItem.appearance(whenContainedInInstancesOf: [UINavigationBar.classForCoder() as! UIAppearanceContainer.Type]).setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.clear], for: .normal)

อัปเดต: หากคุณต้องการใช้แนวทางอื่น ตรวจสอบโพสต์นี้ จะปรับแต่งสัญลักษณ์การนำทางด้านหลังและข้อความการนำทางด้านหลังได้อย่างไร และคำตอบที่ยอมรับ

person Joe    schedule 25.04.2017