前提
NavigationBarの戻るボタンに設定されている文言、デフォルトだと単に前の画面のタイトルの文言を表示したり、文字数によっては省略されて勝手に"戻る"に設定されたりします。
画面によって見た目がバラつくので、いっそ全て"戻る"や"Back"で一括設定したい場合は多いです。
ただ、そのために全てのViewControllerでBaseViewControllerを継承して云々するようなことはとても面倒です。
そこで楽に設定する方法がないか調べました。
コード
UINavigationControllerのExtensionから一括設定できます。
以下のコードをプロジェクト中のどこかに書くだけで、全てのNavigationController以下のViewControllerで有無を言わさず戻るボタンの文言が上書きされます。
extension UINavigationController {
override open func viewDidLayoutSubviews() {
let backButton = UIBarButtonItem()
backButton.title = "もどる"
self.navigationBar.topItem?.backBarButtonItem = backButton
}
}
画像
- 補足1
viewWillLayoutSubviews
のoverrideではNavigationControllerのRootVCでしか文言設定が適用されない場合がありました。
- 補足2
詳しくは失念しましたが、上記のようなコードはAppleのガイドラインから逸脱しているのではないか、という指摘がコードレビューでありました(ただ明確に否定する根拠もなかったということです)。使用される際は自己責任で。。