Мне нужно временно скрыть кнопку «Назад» в представлении во время асинхронной операции. Я хочу запретить пользователю покидать представление до завершения операции.
Это можно скрыть навсегда с помощью .navigationBarBackButtonHidden (true). Но тогда, очевидно, что пользователь не может go вернуться в этом случае, поэтому он застрял. Что мне не хватает?
Вот надуманный пример, чтобы продемонстрировать:
struct TimerTest: View {
@State var isTimerRunning = false
var body: some View {
Button(action:self.startTimer) {
Text("Start Timer")
}
.navigationBarBackButtonHidden(isTimerRunning)
//.navigationBarBackButtonHidden(true) // This does hide it, but then it can't be unhidden.
}
func startTimer()
{
self.isTimerRunning = true
_ = Timer.scheduledTimer(withTimeInterval: 5.0, repeats: false) { timer in
print("Timer fired!")
self.isTimerRunning = false
}
}
}