Переход от одного вида к другому SwiftUI - PullRequest
0 голосов
/ 08 июня 2019

Как я могу перейти с одного View на другое?Есть ли push / pop как в UIKit?Должен ли я использовать NavigationView, и если да, то как?

1 Ответ

0 голосов
/ 08 июня 2019

Использование NavigationView

NavigationView s привязаны к NavigationButton (AFAIK, который является единственным способом вызвать переход). Вот простой пример, когда основной вид может переходить в подробный вид.

struct DetailView : View {
    let value: String

    var body : some View {
        Text("Full View: \(value)")
    }
}

struct MainView : View {
    var body : some View {
        NavigationView {
            NavigationButton(destination: DetailView(value: "Hello World"),
                             label: { Text("Click Me") })
        }
    }
}

Это автоматически обработает переходы и добавит кнопку возврата.

Использование состояния

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

struct DetailView : View {
    let value: String
    let onDone: () -> Void

    var body : some View {
        VStack {
            Text("Full View: \(value)")
            Button(action: onDone, label: { Text("Back") })
        }
    }
}

struct MainView : View {
    @State var displaySubview = false

    var body : some View {
        VStack {
            if displaySubview {
                DetailView(value: "Hello World") {
                    self.displaySubview = false
                }
            } else {
                Button(action: {
                    self.displaySubview = true
                }, label: { Text("Click Me") })
            }
        }
    }
}

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

...