【问题标题】:SwiftUI NavigationView in VStackVStack 中的 SwiftUI NavigationView
【发布时间】:2020-03-29 11:35:37
【问题描述】:

我有以下代码:

第一个结构:

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

这会产生以下行为:

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

【问题讨论】:

    标签: swift navigation swiftui


    【解决方案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()))
                }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-09-21
      • 2020-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      相关资源
      最近更新 更多