2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

NavigationBarの「戻る」ボタンの文言を数行で一括設定する

Last updated at Posted at 2017-10-02

前提

 NavigationBarの戻るボタンに設定されている文言、デフォルトだと単に前の画面のタイトルの文言を表示したり、文字数によっては省略されて勝手に"戻る"に設定されたりします。
 画面によって見た目がバラつくので、いっそ全て"戻る"や"Back"で一括設定したい場合は多いです。
 ただ、そのために全てのViewControllerでBaseViewControllerを継承して云々するようなことはとても面倒です。
 そこで楽に設定する方法がないか調べました。

コード

 UINavigationControllerのExtensionから一括設定できます。
 以下のコードをプロジェクト中のどこかに書くだけで、全てのNavigationController以下のViewControllerで有無を言わさず戻るボタンの文言が上書きされます。

extension UINavigationController {
    override open func viewDidLayoutSubviews() {
        let backButton = UIBarButtonItem()
        backButton.title = "もどる"
        self.navigationBar.topItem?.backBarButtonItem = backButton
    }
}

画像

スクリーンショット 2017-10-03 2.59.46.png
スクリーンショット 2017-10-03 3.00.02.png
スクリーンショット 2017-10-03 3.00.12.png

  • 補足1

 viewWillLayoutSubviewsのoverrideではNavigationControllerのRootVCでしか文言設定が適用されない場合がありました。

  • 補足2

 詳しくは失念しましたが、上記のようなコードはAppleのガイドラインから逸脱しているのではないか、という指摘がコードレビューでありました(ただ明確に否定する根拠もなかったということです)。使用される際は自己責任で。。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?