web-dev-qa-db-ja.com

Swift3のナビゲーションコントローラーの戻るボタンのタイトルを変更する方法

Swift 3.で、戻るボタンのタイトルを任意の名前に変更したい。3。多くの方法を試しましたが、どれもうまくいきませんでした。

self.navigationItem.backBarButtonItem?.title="Title"
self.navigationController?.navigationItem.backBarButtonItem?.title="Title"

参考までに、appdelegateのコードの下に書きました。

let backImage : UIImage = UIImage(named:"backArrow")!
UINavigationBar.appearance().barTintColor = UIColor(red: 0.0/255.0, green: 0.0/255.0, blue: 0.0/255.0, alpha: 1.0)
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().backIndicatorImage = backImage
UINavigationBar.appearance().backIndicatorTransitionMaskImage = backImage
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.white]
UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(0, 0), for: .default)
IQKeyboardManager.sharedManager().enable = true
self.window?.backgroundColor = UIColor.white
6
TechChain

ナビゲーションアイテムの戻るボタンの名前は、ナビゲーションスタックにプッシュする前のビューコントローラーのタイトルと同じになります。

したがって、VC AがVC Bを押すと、VC Bの戻るボタンがAになります。

コードを使用して新しいviewControllerをプッシュする前に、前のviewControllerのタイトルを変更するだけです。

self.navigationItem.title = "ABCD"

VC AのViewWillAppearでは、以前のタイトルに戻すことができます:)

self.navigationItem.title = "Back to xyz"

このすべてのサーカスが必要ない場合は、次のようにしてデフォルトの戻るボタンを非表示にできます。

self.navigationItem.hidesBackButton = true

VC Bで、UIBarButtonアイテムを作成し、設定するタイトルを設定してから、それをleftBarButtonItem :)として設定します。

self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: NSLocalizedString("ABCD", comment: "ABCD"), style: .plain, target: self, action:#selector(self.abcdTapped:)

もちろん、今では "<"アイコンは表示されません:)これも必要な場合は、画像としてバックバーボタンの項目に追加できます:)しかし、その煩雑さ:)

それが役に立てば幸い :)

6

backBarButtonItemをプッシュするnavigationItemviewControllerviewControllerプロパティを設定する必要があります。

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

ただし、viewControllerごとにこれを設定する必要があります。

4
Sparr

これが方法です:

extension UINavigationController {
    func addCustomBackButton(title: String = "Back") {
        let backButton = UIBarButtonItem()
        backButton.title = title
        navigationBar.topItem?.backBarButtonItem = backButton
    }
}
3
Valerio

Swift 3.appdelegatedidFinishLaunchingWithOptionsメソッドのコードの下に配置すると、完全に機能しました

let backImage = UIImage(named: "BackNavigation")?.withRenderingMode(.alwaysOriginal)
UINavigationBar.appearance().backIndicatorImage = backImage
UINavigationBar.appearance().backIndicatorTransitionMaskImage = backImage
UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(0, -80.0), for: .default)

タイトルを削除したくない場合は、最後の行でNavigation Back Buttonのタイトルを削除し、コメントを追加します

3
arunjos007

私が探していた答えが見つからなかったので、私の解決策をあなたと共有します。

場合によっては、戻るボタンが定義されていると思われるViewControllerではなく、親ViewControllerで戻るボタンのテキストを変更する必要があります。ナビゲーションコントローラはViewControllerを次々にスタックすることに注意してください。

私の場合、「ParentViewController」の関数prepare(for segue: )でこれを行いました:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if segue.identifier == "showChildViewController" {
        if let childViewController = segue.destination as? ChildViewController {
            let backItem = UIBarButtonItem()
            backItem.title = "Back"
            navigationItem.backBarButtonItem = backItem
        }
    }
2
Jose Briones

次の手順で画像を戻るボタンに設定してみてください。

出力:

enter image description here

ステップ1:

次のコードをAppDelegateに追加します

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    var backButtonImage = UIImage(named: "Your Image Name")
    backButtonImage = backButtonImage?.stretchableImage(withLeftCapWidth: 0, topCapHeight: 0)
    UIBarButtonItem.appearance().setBackButtonBackgroundImage(backButtonImage, for: .normal, barMetrics: .default)
    UINavigationBar.appearance().barTintColor = UIColor(red: 0.0/255.0, green: 0.0/255.0, blue: 0.0/255.0, alpha: 1.0)
    UINavigationBar.appearance().tintColor = UIColor.white

    return true
}

ステップ2:

MainVCに次のコードを追加します

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    title = "Title 1"
    navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.white, NSFontAttributeName:UIFont(name:"HelveticaNeue", size: 20)!]
  }

ステップ3:

次のコードをDestVCまたは2ndVCに追加します

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    title = "Title 2"
    navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.white, NSFontAttributeName:UIFont(name:"HelveticaNeue", size: 20)!]
  }

ステップ4:

StoryBoardからnavigationBarを選択し、Attribute Inspectorに移動します。 ナビゲーション項目の下で、バックを変更しますボタン名空白スペースを入力するか、プログラムでプレーンなタイトルの戻るボタンを作成します。

enter image description here

ステップ5:

アセットにアイコン画像を追加します。 1x29pt2x58ptおよび3x87pt 。アセット画像のサイズがわかりません。サイズクラスについては、Apple docで確認してください。

enter image description here


更新:

この投稿に関する私の同様の回答。

ナビゲーションバックシンボルとナビゲーションバックテキストをカスタマイズする方法

0
Joe