発生した問題
同じViewController,同じコードなのに表示の仕方(モーダル or フルスクリーン)によって UIButtonに設定したmenu の並び順が変わってしまう。
わかったこと
UIMenuの項目の並び順はシステム側で勝手に並び替えられることがある
UIButton に preferredMenuElementOrder
というプロパティがあり、状況によってデフォの設定が変わるらしい
解決方法
とりあえず.fixed
にしておけば順番を固定できる
//preferredMenuElementOrderの設定を追加する
button.preferredMenuElementOrder = .fixed
結論
こんなプロパティ知らんかった
for文でenumから項目を生成してたから何かの間違いで順番が保証されてないのかと思って焦った
SwiftUIのmenuOrder(_:)の説明の方が詳しかった
https://developer.apple.com/documentation/swiftui/view/menuorder(_:)
SwiftUIに移行しよう
参考