Swift:将"Back"设置为默认按钮文本"segue back"按钮



我正在寻找一种将所有后退按钮文本设置为" back"的方法

我有多个视图和曲目,希望有一种比在所有视图控制器中使用Preparforsegue更清洁的方法。

这也可以简化本地化,因为我使用户能够更改语言。

有人有任何建议或解决方案吗?

创建到uiviewController的扩展(您可以为此创建其他空文件,并确保导入Uikit) - :

import UIKit
extension UIViewController  {

    func leftBarButton(subView:UIView,labelView:UILabel,imageView:UIImageView) -> UIBarButtonItem{
        let leftBarButton = UIBarButtonItem(customView: subView)
        subView.frame = CGRect(x: 0, y: 0, width: 100, height: 40)
        subView.addSubview(imageView)
        subView.addSubview(labelView)
        imageView.leftAnchor.constraint(equalTo: subView.leftAnchor,constant: -8).isActive = true
        imageView.topAnchor.constraint(equalTo: subView.topAnchor, constant: 2).isActive = true
        imageView.heightAnchor.constraint(equalToConstant: 30).isActive = true
        imageView.widthAnchor.constraint(equalToConstant: 30).isActive = true
        labelView.leftAnchor.constraint(equalTo: imageView.rightAnchor,constant: 8).isActive  = true
        labelView.rightAnchor.constraint(equalTo: subView.rightAnchor).isActive = true
        labelView.topAnchor.constraint(equalTo: subView.topAnchor).isActive = true
        labelView.heightAnchor.constraint(equalToConstant: 40).isActive = true
        return leftBarButton
    }
    func anotherMethod(){
       _ =  self.navigationController?.popViewController(animated: true)
    }
}

在控制器类中 - :

  var views : UIView = {
        let subView = UIView()
        //subView.backgroundColor = UIColor.green
        return subView
    }()
    var imageView : UIImageView = {
        var view = UIImageView()
        view.translatesAutoresizingMaskIntoConstraints = false
        view.image = UIImage(named: "Back")
        return view
    }()
    var labelView: UILabel = {
        var labeView = UILabel()
        labeView.translatesAutoresizingMaskIntoConstraints = false
        labeView.text = "Back"
        labeView.textColor = UIColor.blue
        return labeView
    }()
    // ViewDidLoad
    override func viewDidLoad() {
        super.viewDidLoad()
        //self.navigationBar.tintColor = UIColor.green
       self.navigationItem.leftBarButtonItem = leftBarButton(subView: views, labelView: labelView, imageView: imageView)

    }

由于您需要的东西没有外观代理,因此您可以继承路由并创建类似的基类:

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

只是从中继承了:

class YourViewController: BaseClass { ... }

最新更新