Как сделать что-то (например: print ("hi")) в NavigationLink перед переходом к destinationView - PullRequest
1 голос
/ 10 июля 2019

Я пытаюсь создать кнопку, чтобы сделать что-то, прежде чем перейти к другому виду.Но если я использую кнопку, я не могу перейти к другому представлению, и если я использую NavigationLink, я не могу ничего делать, кроме навигации.

Я добавляю кнопку и навигационную ссылку ниже.

Я пытаюсь выполнить аутентификацию на основе firebase с этой кнопкой, и после завершения аутентификации я хочу перейти к другому представлению.

Button(action: {print("Hi")}) {
                Text("Create Account")
                    .font(.system(size: 20))
                    .foregroundColor(Color("GreyLabel0"))              
    }

NavigationLink(destination: WelcomeView()) {
     Text("Create Account")
                    .font(.system(size: 20))
                    .foregroundColor(Color("GreyLabel0"))
}

1 Ответ

2 голосов
/ 10 июля 2019

Вы можете вставить новый вид в NavigationView, используя DynamicNavigationDestinationLink . Таким образом, вы можете сделать это программно и использовать шанс запустить свой собственный код. В этом случае напечатайте («привет»).

struct ContentView: View {

    var body: some View {
        NavigationView {
            TopView().navigationBarTitle(Text("Top View"))
        }
    }
}

struct TopView: View {

    let detailView = DynamicNavigationDestinationLink(id: \String.self) { data in
        DetailView(passedData: data)
    }

    var body: some View {
        VStack {
            Button(action: {
                print("hi")
                self.detailView.presentedData?.value = "Tapped!"
            }, label: {
                Text("Present Now!")
            })

        }
    }
}

struct DetailView: View {
    let passedData: String

    var body: some View {
        Text(passedData)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...