Swift 4 从后退按钮中删除文本

Swift 4 remove text from back button

伙计们,我想从 返回 按钮中删除文本。 我使用此代码从 VC1 导航到 VS2 (登录表单)。我试图将此代码添加到 VC2 但没有。

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

代码:

@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)
    
}

有几种方法可以实现您的目标。

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

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

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

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

第二种方法是在parent视图控制器(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)

}

后退按钮文本是上一个 ViewController

的标题

我建议您更改 viewDidDisapear 方法上的先前 ViewController 标题。

let button1 = UIBarButtonItem(image: UIImage(named: "backImage"), style: .plain, target: self, action: Selector("action")) 
//action:#selector(Class.MethodName) for swift 4
self.navigationItem.rightBarButtonItem  = button1

如果愿意,您可以将图像用作后退按钮,或者可以将 UIBarButtonItem 的标题设置为 nil

navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)

在界面生成器中,您可以 select 上一个控制器的导航项,并将后退按钮字符串更改为您希望后退按钮显示的内容。例如,如果您希望它为空,只需输入 space.

你也可以用这行代码来改变它:

[self.navigationItem.backBarButtonItem setTitle:@"Title here"];

或在Swift中:

self.navigationItem.backBarButtonItem?.title = ""

要从整个应用程序中删除后退按钮文本,请使用:(Swift)

var navBarButtonAppearance = UIBarButtonItem.appearanceWhenContained(in: UINavigationBar.self, nil)

navBarButtonAppearance.setTitleTextAttributes([NSAttributedStringKey.font: UIFont.systemFont(ofSize: 0.1), NSAttributedStringKey.foregroundColor: UIColor.clear], for: .normal)

这个简单的解决方案对我有用:

    self.navigationController?.navigationBar.topItem?.backButtonTitle = ""