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

问题描述 投票:0回答:4

伙计们我想从后退按钮中删除文本。我使用此代码从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)

}

enter image description here

swift navigation title back-button
4个回答
1
投票

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

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

enter image description here

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

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

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

enter image description here

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

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

enter image description here

它将后退按钮标题设置为您在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)

}

0
投票

后退按钮文本是以前ViewController的标题

我建议你在viewDidDisapear方法上改变以前的ViewController标题。


0
投票
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)

0
投票

在界面构建器中,您可以选择上一个控制器的导航项,并将后退按钮字符串更改为您希望后退按钮显示的位置。例如,如果你想把它留空,只需要放一个空格。

您也可以使用以下代码更改它:

[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)
© www.soinside.com 2019 - 2024. All rights reserved.