我正在尝试在我的应用程序中创建一个导航菜单。当前,当我单击导航栏中的按钮时,出现一个演示模式。在那个模型中,我在列表中有一些按钮,但不幸的是,我不知道该如何工作。理想情况下,我希望按钮在单击时退出演示模式,并导航到特定视图(即,如果我在菜单中按“配置文件”,则希望显示“配置文件视图”)。我尝试使用导航按钮,但它始终显示后退按钮/不退出演示模式。
//View with button in nav bar
struct HomeView : View {
@State var showNav: Bool = false
var body: some View {
NavigationView {
List {
Text("hi")
}
.navigationBarItems(leading:
Button(action: {
self.showNav = true
}) {
Image("Image")
.resizable()
.frame(width: 60, height:60)
}
)
}.presentation(showNav ? Modal(NavView(),
onDismiss: { self.showNav = false }) : nil)}
//View With navigation controlls
struct NavView : View {
@State var pressedHome: Bool = false
@State var pressedProfile: Bool = false
var body: some View {
List{
Button(action: {
self.pressedHome = true
}) {
Text("Home")
}
Button(action: {
self.pressedProflie = true
}) {
Text("Profile")
}
}
}
答案 0 :(得分:1)
为了消除presented view
,请在您的NavView
内添加一个绑定属性var:-
struct NavView : View {
@Binding var showNav: Bool
}
然后将其替换为下面的行
presentation(showNav ? Modal(NavView(),
onDismiss: { self.showNav = false }) : nil)}
与此
presentation(showNav ? Modal(NavView(showNav: $showNav),
onDismiss: { self.showNav = false }) : nil)}
然后在您的两个按钮操作中添加此行
Button(action: {
self.pressedHome = true
self.showNav.toggle() //added this line
}) {
Text("Home")
}
Button(action: {
self.pressedHome = true
self.showNav.toggle() //added this line
}) {
Text("Profile")
}