VStack 中的 SwiftUI NavigationView

SwiftUI NavigationView in VStack

我有以下代码:

第一个结构:

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()))
        }
    }
}

这会产生以下行为:

我想要的: 当按下一个按钮时,而不是只占用新视图 space 的 1/3,它应该占用全屏。

要获得您想要的行为,您只需从 MenuBotton 结构中删除 NavigationView 并将 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()))
            }
        }
    }
}