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

时间:2018-07-20 17:08:17

标签: swift navigation title 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)

}

enter image description here

4 个答案:

答案 0 :(得分: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)

}

答案 1 :(得分:0)

后退按钮文本是上一个ViewController的标题

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

答案 2 :(得分: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)

答案 3 :(得分: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)