Open2

SwiftUI: TabViewの5枚目以降のViewで.alertするケース

kabeyakabeya

以下、iOS16/17で確認。

TabViewに6枚以上のビューを用意すると(iPhoneの場合)、5個目のアイコンは「その他」になって、「その他」アイコンをタップするとリスト形式のナビゲーションビューのようなものが自動的に表示され、5枚目以降のビューにはそこからナビゲーションビューのようなスライド形式の遷移をします。

それで問題は、5枚目以降のビューで.alertを使って警告メッセージを表示すると、ビューの表示が「その他」をタップする前に表示していたところに戻ってしまう、という動作です。

自動的にナビゲーションビュー(NavigationStack?)でpush/popしてくれるのだけども、.alertでは何かそこが狂うようなイメージです。

解決方法はまだ見つかっていません。
4枚目までのビューで.alertする分には問題ありません。

kabeyakabeya

「その他」画面相当のものを自前で用意するぐらいしかないのかという気がしてきました。

  • 画面の大きさを見て、どのボタンがタブに載って、どのボタンがその他になるかを判断
  • その他ボタンを押されたときに表示するメニュー用ビューの作成
  • メニュー用ビューから、各ビューへの遷移

なんかそうではなく、タブバーの側のボタン制御を頑張るという手もある気もするのですが。

  • 単に、「その他」ボタンではなくて矢印ボタンにする。
  • 矢印ボタンをタップしたら、ボタンがスライドして入れ替わる。