Вызывать NavigationLink программно? - PullRequest
1 голос
/ 19 октября 2019

Можно ли вызвать навигационную ссылку программным способом?

Это было возможно, но теперь устарело.

var link1 = NavigationLink("Link Text", destination: MyView1())
var link1 = NavigationLink("Link Text", destination: MyView2())

//Something like this
           Button(action: {

            if (option == 1){
                self.link1.presented?.value = true
            }
            else{
                self.link2.presented?.value = true
            }
        }

1 Ответ

1 голос
/ 20 октября 2019

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

Помните, что в SwiftUI мы используем структуры, и они static. По этой причине вы не можете установить self.link1.presented?.value на true во время выполнения кода.

Чтобы сделать это, вы можете сначала изменить var на @State var, что означает, что SwiftUI сделает эту переменную динамической. Имея это в виду, вы можете управлять тем, какое представление вы будете показывать, просто сохраняя, какая опция отмечена.

Я изменил ваш код, чтобы показать это:

//begining of your struct
@State var selectedOption = 1 

//something changed the selectedOption
self.selectedOption = 2

//Here your NavigationLink ( use it without button)
NavigationLink("Link Text", destination: selectedOption == 1 ? View1 : View2)

Надеюсь, это поможет!

...