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()))
}
}
}
}
我有以下代码:
第一个结构:
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()))
}
}
}
}