SwiftUI NavigationView в VStack - PullRequest
       7

SwiftUI NavigationView в VStack

0 голосов
/ 29 марта 2020

У меня есть следующий код:

Первая структура:

struct MenuButton: View {

    var buttonText: String
    var buttonCallView: AnyView

    var body: some View {
        NavigationView{
            NavigationLink(destination: self.buttonCallView) {
                Text(self.buttonText)
            }
        }
    }
}

Вторая структура:

struct ProfileMenuContent: View {
    var body: some View {
        VStack{
            MenuButton(buttonText: "Settings", buttonCallView: AnyView(SettingsView()))
            MenuButton(buttonText: "My Favourites", buttonCallView: AnyView(MyFavouritesView()))
            MenuButton(buttonText: "Sign Out", buttonCallView: AnyView(SignOutView()))
        }
    }
}

Это приводит к следующему поведению: if

Что я хочу: Когда нажата одна кнопка, вместо того, чтобы просто взять 1/3 от пространства для новый просмотр должен занять весь экран.

1 Ответ

1 голос
/ 29 марта 2020

Чтобы получить желаемое поведение, все, что вам нужно сделать, это удалить NavigationView из структуры MenuBotton и добавить NavigationView в свой ProfileMenuContent.

новый код:

struct MenuButton: View {

    var buttonText: String
    var buttonCallView: AnyView

    var body: some View {
        NavigationLink(destination: self.buttonCallView) {
            Text(self.buttonText)
        }
    }
}

struct ProfileMenuContent: View {
    var body: some View {
        NavigationView {
            VStack {
                MenuButton(buttonText: "Settings", buttonCallView: AnyView(SettingsView()))
                MenuButton(buttonText: "My Favourites", buttonCallView: AnyView(MyFavouritesView()))
                MenuButton(buttonText: "Sign Out", buttonCallView: AnyView(SignOutView()))
            }
        }
    }
}
...