【SwiftUI】iPhoneシミュレーターで作成していたアプリをiPadシミュレーターに変更すると表示されない

この記事は約2分で読めます。

XCodeのiPadシミューレーターを使用する際に、Viewが真っ白の画面になってしまい、困ったことがあったため、残しておきます。

 navigationViewStyleは非推奨となっており、iOS16.0以降は、NavigationStackを使用した方が良いようです。

現象

元々iPhoneのシミュレーターで動作確認をしていたアプリで、iPhoneの動作確認がひと段落したため、iPadで確認しようとしたところ、表題のような現象が発生しました。

再現用のソース

特に変わったことはしておらず、NavigationViewを使用しているだけです。
“Hello, World!”と表示されることを期待したのですが、真っ白な画面と左上にBackボタンが付いている画面になってしまいます。

import SwiftUI

struct NavigationViewError: View {
    var body: some View {
        NavigationView {
            Text("Hello, World!")
        }
    }
}

原因

NavigationViewを使用している時に、現象が発生します。

NavigationViewをデフォルトで使用すると、iPad等の幅の広い画面だと複数の列で表示されるようです。(iPhoneだと幅が狭いため、自動的に1つの列の画面になるのだと思います)
https://developer.apple.com/documentation/swiftui/view/navigationviewstyle(_:)

解決策

NavigationViewのスタイルを指定すると解決できました。

解決方法

NavigationViewにモディファイア「.navigationViewStyle(.stack)」を適用するだけです。

import SwiftUI

struct NavigationViewError: View {
    var body: some View {
        NavigationView {
            Text("Hello, World!")
        }
        .navigationViewStyle(.stack)
    }
}
タイトルとURLをコピーしました