SwiftUI의 NavigationView에서 displayMode를 사용할 때 애플리케이션 충돌

5291 단어 swiftswiftui
displayMode 에서 NavigationView 를 지정하면 앱이 시작될 때 충돌합니다. 이 버그는 Xcode 12 베타 2에서 수정되었습니다. 그러나 충돌은 항상 Xcode 11.6에서 발생합니다.

환경


  • Xcode 11.6
  • iOS 13.6

  • 문제가 있어요!!



    이 예제 코드는 정확합니다.

    struct HomeView : View {
    
        var body: some View {
            NavigationView {
                VStack {
                    Text("ねこ")
                }
                .navigationViewStyle(StackNavigationViewStyle())
                .navigationBarTitle(R.string.localizable.home_title())
                .navigationBarItems(leading: Text("設定"))
            }
            .onAppear {
                FA.track(page: "ホーム")
            }
        }
    }
    

    이 샘플 코드는 앱이 시작될 때 충돌합니다.

    struct HomeView : View {
    
        var body: some View {
            NavigationView {
                VStack {
                    Text("ねこ")
                }
                .navigationViewStyle(StackNavigationViewStyle())
                .navigationBarTitle(Text(R.string.localizable.home_title()), displayMode: .inline)
                .navigationBarItems(leading: Text("設定"))
            }
            .onAppear {
                FA.track(page: "ホーム")
            }
        }
    }
    

    문제를 해결했습니다!



    분명히 이것은 Xcode 12 Beta2에서 수정되었지만 Xcode 11.6부터 탐색 모음 투명도 플래그가 false 로 설정되면 앱이 충돌합니다.

    UINavigationBar.appearance().isTranslucent = false
    
    true 로 설정하면 앱이 충돌하지 않습니다.

    UINavigationBar.appearance().isTranslucent = true
    

    메모



    원문은 "SwiftUIで NavigationViewでdisplayModeを指定するとアプリ実行時にクラッシュする "입니다. 저는 기계 번역을 사용합니다.

    좋은 웹페이지 즐겨찾기