首页 > 解决方案 > Swift 4 remove text from back button

问题描述

Guys i want to remove text from Back button. i use this code to navigate from VC1 to VS2 (login form). I tried to add this code to VC2 but nothing.

self.navigationController?.navigationBar.backItem?.title = ""

code:

@IBAction func didSelectSegment(_ sender: UISegmentedControl) {
    
    let vcName = vcNames[sender.selectedSegmentIndex]
    if vcName == "NQTPastRecordViewController" && loggined() == false {
        let alert = alertAskLogin({
            let signInVC = getController("EVSignInViewController")
            
            self.navigationController?.pushViewController(signInVC, animated: true)
        })
        self.present(alert, animated: true, completion: nil)
        segmentControll.selectedSegmentIndex = 0
        return
    }
    self.container.swipeToController(at: sender.selectedSegmentIndex)
    
}

标签: swiftnavigationtitleback-button

解决方案


有几种方法可以实现您想要做的事情。

当您将视图控制器 (VC2) 推送到第一个控制器 (VC1) 的导航堆栈时,默认情况下,后退按钮使用第一个屏幕的标题作为第二个屏幕显示时的后退按钮标题。

在此处输入图像描述

因此,在 VC1 中,您可以在推入堆栈之前将视图控制器的标题设置为空字符串

override func viewDidLoad() {
    super.viewDidLoad()
    self.title = ""
}

这将为您留下一个只有“<”字符的后退按钮。

在此处输入图像描述

第二种方法是在父视图控制器(VC1)中设置一个自定义的后退栏按钮项

override func viewDidLoad() {
    super.viewDidLoad()
    navigationItem.backBarButtonItem = UIBarButtonItem(title: "Back", style: .plain, target: nil, action: nil)
}

在此处输入图像描述

它将后退按钮标题设置为您在 UIBarButtonItem 标题字段中设置的任何内容。

所以你的实现可能看起来像这样:(选择一个选项或另一个选项,如果你这样做,自定义栏按钮项目会覆盖标题。)

@IBAction func didSelectSegment(_ sender: UISegmentedControl) {

    let vcName = vcNames[sender.selectedSegmentIndex]
    if vcName == "NQTPastRecordViewController" && loggined() == false {
        let alert = alertAskLogin({
            let signInVC = getController("EVSignInViewController")

            // set title to empty string here
            title = ""

            // or set a custom back bar button item and set target/action as needed
            navigationItem.backBarButtonItem = UIBarButtonItem(title: "Back", style: .plain, target: nil, action: nil)

            navigationController?.pushViewController(signInVC, animated: true)
        })
        self.present(alert, animated: true, completion: nil)
        segmentControll.selectedSegmentIndex = 0
        return
    }
    container.swipeToController(at: sender.selectedSegmentIndex)

}

推荐阅读