我正在寻找一种将所有后退按钮文本设置为" 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 { ... }