iOS14で戻るボタンのタイトルを空欄にするきちんとした方法
先にまとめ
if #available(iOS 14.0, *) {
navigationItem.backButtonDisplayMode = .minimal
} else {
navigationItem.backButtonTitle = " "
}
でOK!
概要
iOS14のアップデートの1つに、
- ナビゲーションバーの戻るボタンを長押しすると、画面遷移のヒストリーが表示され、いくつか前の画面までいっきに戻ることができる
というのがありますよね。
ユーザー目線ではたいへん便利な機能ですが、例えば、デザイン的に「戻るのタイトルを空欄」にしていたりすると、
と、この長押し時の戻り先リストも空欄になってしまうなどの問題が出てきます。
iOS13以前の方法
iOS13以前では、例えば、
Xcodeで該当画面(戻り先の画面)のNavigation Item
のBack Button
に空白を1つ入れるなどして、戻るのタイトルを消すワークアラウンドがありました。
しかし、これをすると、iOS 14以降では長押し時の戻り先リストがおかしくなってしまうわけです。
iOS14でのきちんとした方法
そのため、まずiOS14ではBack Button
の設定はいじらないようにしましょう1。
そうすると当然、
このように戻るボタンのところに画面名が表示されてしまいます。
そのうえで、iOS14から追加されたUINavigationItem
のbackButtonDisplayMode
を設定します。
https://developer.apple.com/documentation/uikit/uinavigationitem/3656350-backbuttondisplaymode
戻り先のUIViewController
で、
if #available(iOS 14.0, *) {
navigationItem.backButtonDisplayMode = .minimal
} else {
navigationItem.backButtonTitle = " "
}
と navigationItem.backButtonDisplayMode
に .minimal
を設定することで、戻るボタンのタイトルが非表示になります。
また、Back Button
などもいじっていないため、戻るボタン長押し時の戻り先のリストも、
のようにきちんと表示されます。
UINavigationItem.BackButtonDisplayMode
なお、backButtonDisplayMode
には以下の3種の値を設定できます。
BackButtonDisplayMode | 挙動 |
---|---|
default |
デフォルト値はこれで従来の挙動。具体的には画面のスペースに応じて「前画面のnavigationItem.backButtonTitle 」「前画面のtitle 」「Back(戻る)」「空欄」の優先順位でいずれかが表示される |
generic |
スペースがあれば「Back(戻る)」を表示、なければ空欄 |
minimal |
常に空欄 |
例えば、先ほどの画面にgeneric
を設定した時のサンプルはこちらです。
-
戻るボタンのタイトルを別のものに差し替えたいときだけ変更する ↩︎