SwiftUI: Как использовать модификатор .presentation для оповещения?Получение ошибки проверки типа компилятора - PullRequest
2 голосов
/ 22 июня 2019

Я пересматриваю приложение Викторины, которое я сделал в UIKit для SwiftUI, для удовольствия, и я столкнулся с ошибкой компилятора для последнего модификатора .presentation, который у меня есть ниже.

Я не уверен, как бы это сломатьвверх.Это кажется достаточно простым.Запуск MacBook Pro Retina i7 2012 года.

@State var showingSaveAlert = false
@State var showingLoadSaveAlert = false


var loadProgress: Alert {
        Alert(title: Text("Load Progress?"), message: Text("Continue from question \(studySaver)?"), primaryButton: .default(Text("Load"), onTrigger: {
            self.loadProgressHandler()
        }), secondaryButton: .cancel())
    }

    var savedAlert: Alert {
        Alert(title: Text("Saved!"), message: Text("Your place has been saved. You may now leave this page without loosing progress."), dismissButton: .cancel())
    }


//MARK: SwiftUI
var body: some View {
        VStack{

        // Bunch of Swift UI Code within the VStack
        ...

            }
            .navigationBarTitle(Text(subject + " Test"), displayMode: .inline)
            .navigationBarItems(trailing:
                Button(action: {
                    self.showingSaveAlert = true
                    self.save()
                    print("Saved")
                }) {
                    Text("Save")
                    }
                    .presentation(showingSaveAlert ? savedAlert : nil)
            )
            .onAppear(){
                print("Test Page Appeared")
                self.showingLoadSaveAlert = true
                self.showingContinue = false
                self.questionLoader()
            }
            .presentation(showingLoadSaveAlert ? loadProgress : nil)


    } //MARK: End of SwiftUI

I would expect it to clear but I get a type-check error on the last modifier .presentation(showingLoadSaveAlert ? loadProgress : nil)

Error:
"The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions"

The main goal is to get an alert to show up when the View appears asking to load a save for a quiz.

Any thoughts?

1 Ответ

1 голос
/ 22 июня 2019

Проблема в этой строке: (и другие коды представления предупреждений)

.presentation(showingSaveAlert ? savedAlert : nil)

Предупреждения должны Привязать к Bool в SwiftUI.

изменитьэто к этому:

.presentation($showingSaveAlert) { savedAlert }
...