I want to run account creation logic and then, if successful, transition to the destination view. Otherwise, I'll present an error sheet. NavigationLink transitions immediately to the destination view on tap.
I can get it to work if I create a phantom NavigationLink using the isActive overload and an empty string as the text (which creates a view with a zero frame). Then I toggle the isActive property with a Button presented to the user that runs the account creation logic first and at the end of the chain toggles the NavigationLink to active. I am inside a NavigationView.
@State private var isActive: Bool = false
NavigationView {
// Name, Email, Password Textfields here
// Button to run account creation logic:
Button(action: {
// Account creation promise chain here, then...
self.isActive.toggle()
}) {
Text("Create Account")
}
// Phantom navigation link:
NavigationLink("", destination: VerifyEmailView(email: email), isActive: self.$isActive)
}
Is there a better way to do this? It seems bad practice to trigger running the account creation logic from a button, and then activate a phantom navigation link to transition to the next screen.