【问题标题】:Swift 4 remove text from back buttonSwift 4 从后退按钮中删除文本
【发布时间】:2018-12-29 01:14:16
【问题描述】:

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

【问题讨论】:

    标签: swift navigation title back-button


    【解决方案1】:

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

    当您将视图控制器 (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)
    
    }
    

    【讨论】:

      【解决方案2】:

      后退按钮文字是前一个ViewController的标题

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

      【讨论】:

        【解决方案3】:
        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)
        

        【讨论】:

          【解决方案4】:

          在界面构建器中,您可以选择前一个控制器的导航项,并将后退按钮字符串更改为您希望后退按钮显示的内容。例如,如果您希望它为空白,只需输入一个空格即可。

          你也可以用这行代码改一下:

          [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)
          

          【讨论】:

            【解决方案5】:

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

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

            【讨论】:

              猜你喜欢
              • 2020-08-28
              • 2014-05-30
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-06-17
              • 1970-01-01
              相关资源
              最近更新 更多