VStack中的SwiftUI NavigationView

时间:2020-03-29 11:35:37

标签: swift navigation swiftui

我有以下代码:

第一结构:

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 个答案:

答案 0 :(得分:1)

要获得所需的行为,您所需要做的就是从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()))
            }
        }
    }
}