Можно ли заменить navigationLink?

В голове возник интересный вопрос: а можно ли заменить navigationLink?

NavigationLink меня не устраивала из-за своей иерархии, что вызывало определенные трудности при вызове одного и того же DetailView и передаче данных из разных View.

Пытаясь ответить на эти вопросы, я наткнулся на эту запись, в котором говорится, что существует 3 способа перехода между представлениями. Вот пытаюсь заменить этот код:

    var body: some View {
        NavigationView {
            List(0..<5) { item in
                NavigationLink(
                    destination: Text("test"),
                    label: {
                        Text("\(item)")
                    })
            }
}

Примерно так:

    @State var onOff = false
    
    var body: some View {
        NavigationView {
            List(0..<5) { item in
                Button(action: {
                    self.onOff.toggle()
                }, label: {
                    Text("\(item)")
                })

                if onOff {
                    Text("test")
                }
            }
            .navigationBarTitle(Text("Test"), displayMode: .inline)
        }
        .navigationViewStyle(StackNavigationViewStyle())
    }

Однако это не перерисовывает представление, а скорее добавляет его поверх текущего. Как я могу имитировать поведение NavigationLink с помощью кнопки? Я слышал о координаторе, но пока не понял, как им пользоваться.


person Eldar    schedule 10.04.2021    source источник
comment
Это поможет понять, в чем ваша проблема. Иерархия, которая вызвала определенные трудности при вызове одного и того же DetailView и передаче данных из разных View.   -  person Jevon Charles    schedule 10.04.2021