2017-12-02 26 views
0

私は、すべての戻るボタンのテキストをデフォルトでは「戻る」に設定する方法を探しています。から。Swift:デフォルトのボタンテキストとして「戻る」を「戻る」ボタンに設定します

私は複数のビューとセグを持っており、すべてのビューコントローラでPrepareForSegueを使用するよりもきれいな方法があることを願っています。

これは、ユーザーに言語を変更できるようにするため、ローカリゼーションも簡素化されます。

誰もが提案や解決策をお持ちですか?

+0

あなたはこの質問を見てみる必要がありますhttps://stackoverflow.com/questions/38049389/default-back-button-text-and-font-setting – trungduc

答えて

1

(あなたはこのために別の空のファイルを作成し、UIKitのをインポートすることを確認することができます)のUIViewControllerに拡張を作成します - :コントローラクラスで

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) 


    } 
+0

これは動作しますが、テキストの左側にある矢印を削除します。 – Gjeruldsen

+0

@Gjeruldsenそれに応じて修正する必要があるため、UIビューをサブビューとしてバーボタン内に追加し、ボタンイメージを後ろに追加してビュー内にラベルを付ける必要があります。 –

+0

@Gjeruldsenカスタムバックボタンとイメージを追加する方法の回答を更新しました。今すぐ確認してください。 –

0

を全く外観がないので、あなたが必要とするもののための代理人、あなたは継承ルートに行くことができ、このような基本クラスを作成することができます:

class BaseClass: UIViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     navigationItem.backBarButtonItem = UIBarButtonItem(title: "Back", style: .plain, target: nil, action: nil) 
    } 
} 

だけがそれを継承:

class YourViewController: BaseClass { ... } 
関連する問題