使用SwiftUI。单击“我的滑块/侧边”菜单可启动新视图,但单击<;背面>;按钮,现在所有选项都是';死亡';
使用SwiftUI和我增加的滑块/侧菜单教程,以便在每个侧菜单选项上进行操作 当侧菜单显示,我点击一个菜单选项,它的工作非常好,带我到一个新的视图与菜单项。但是,当我点击并看到侧菜单仍然在那里,所有的菜单项都不是死的。菜单项仍然会设置单击的动画(闪烁),但不会发生任何事情。我必须关闭侧菜单,重新打开它,然后菜单项再次工作-一次 谁能告诉我为什么会这样 下面是pretty contentview、mainview和sidemenu视图使用SwiftUI。单击“我的滑块/侧边”菜单可启动新视图,但单击<;背面>;按钮,现在所有选项都是';死亡';,swiftui,swiftui-navigationlink,Swiftui,Swiftui Navigationlink,使用SwiftUI和我增加的滑块/侧菜单教程,以便在每个侧菜单选项上进行操作 当侧菜单显示,我点击一个菜单选项,它的工作非常好,带我到一个新的视图与菜单项。但是,当我点击并看到侧菜单仍然在那里,所有的菜单项都不是死的。菜单项仍然会设置单击的动画(闪烁),但不会发生任何事情。我必须关闭侧菜单,重新打开它,然后菜单项再次工作-一次 谁能告诉我为什么会这样 下面是pretty contentview、mainview和sidemenu视图 //ContentView.swift import Swi
//ContentView.swift
import SwiftUI
struct ContentView: View {
@State var showMenu = false
var body: some View {
let drag = DragGesture()
.onEnded {
if $0.translation.width < -100 {
withAnimation {
self.showMenu = false
}
}
}
return NavigationView {
GeometryReader { geometry in
ZStack(alignment: .leading) {
MainView(showMenu: self.$showMenu)
.frame(width: geometry.size.width, height: geometry.size.height)
.offset(x: self.showMenu ? geometry.size.width/2 : 0)
.disabled(self.showMenu ? true : false)
if self.showMenu {
MenuView()
.frame(width: geometry.size.width/2)
.transition(.move(edge: .leading))
}
}
.gesture(drag)
}
.navigationBarTitle("Side Menu", displayMode: .inline)
.navigationBarItems(leading: (
Button(action: {
withAnimation {
self.showMenu.toggle()
}
}) {
Image(systemName: "line.horizontal.3")
.imageScale(.large)
}
))
}
}
}
struct MainView: View {
@Binding var showMenu: Bool
var body: some View {
Button(action: {
withAnimation {
self.showMenu = true
}
}) {
Text("Show Menu")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
//MenuView.swift
import SwiftUI
struct PlayerView: View {
@State var showMenu = true
//@EnvironmentObject var session: SessionStore
var body: some View {
VStack{
//self.showMenu = true
Text("Manage Players Here").foregroundColor(.red)
}
}
}
struct MenuView: View {
@State var showMenu = true
var body: some View {
VStack(alignment: .leading) {
HStack() {
NavigationLink(destination: PlayerView()) {
HStack(){
Image(systemName: "person")
.foregroundColor(.gray)
.imageScale(.large)
Text("Players")
.foregroundColor(.gray)
.font(.headline)
}
}
}
.padding(.top, 100)
}
.padding()
.frame(maxWidth: .infinity, alignment: .leading)
.background(Color(red: 32/255, green: 32/255, blue: 32/255))
.edgesIgnoringSafeArea(.all)
}
}
struct MenuView_Previews: PreviewProvider {
static var previews: some View {
MenuView()
}
}
enter code here
1) 在MenuView中绑定var
2) 用Zstack显示{}以关闭showMenu
struct ContentView: View {
@State var showMenu = false
var body: some View {
let drag = DragGesture()
.onEnded {
if $0.translation.width < -100 {
withAnimation {
self.showMenu = false
}
}
}
return NavigationView {
GeometryReader { geometry in
ZStack(alignment: .leading) {
MainView(showMenu: self.$showMenu)
.frame(width: geometry.size.width, height: geometry.size.height)
.offset(x: self.showMenu ? geometry.size.width/2 : 0)
.disabled(self.showMenu ? true : false)
if self.showMenu {
MenuView(showMenu: self.$showMenu)
.frame(width: geometry.size.width/2)
.transition(.move(edge: .leading))
}
}
.gesture(drag).onAppear {
self.showMenu = false
}
}
.navigationBarTitle("Side Menu", displayMode: .inline)
.navigationBarItems(leading: (
Button(action: {
withAnimation {
self.showMenu.toggle()
}
}) {
Image(systemName: "line.horizontal.3")
.imageScale(.large)
}
))
}
}
}
struct MainView: View {
@Binding var showMenu: Bool
var body: some View {
Button(action: {
withAnimation {
self.showMenu = true
}
}) {
Text("Show Menu")
}
}
}
struct PlayerView: View {
@State var showMenu = true
//@EnvironmentObject var session: SessionStore
var body: some View {
VStack{
//self.showMenu = true
Text("Manage Players Here").foregroundColor(.red)
}
}
}
struct MenuView: View {
@Binding var showMenu: Bool // = true
var body: some View {
VStack(alignment: .leading) {
HStack() {
NavigationLink(destination: PlayerView()) {
HStack(){
Image(systemName: "person")
.foregroundColor(.gray)
.imageScale(.large)
Text("Players")
.foregroundColor(.gray)
.font(.headline)
}
}
}
.padding(.top, 100)
}
.padding()
.frame(maxWidth: .infinity, alignment: .leading)
.background(Color(red: 32/255, green: 32/255, blue: 32/255))
.edgesIgnoringSafeArea(.all)
}
}
struct ContentView:View{
@状态变量showMenu=false
var body:一些观点{
让drag=DragGesture()
.ONENED{
如果$0.5,则宽度<-100{
动画片{
self.showMenu=false
}
}
}
返回导航视图{
GeometryReader{中的几何体
ZStack(对齐:。引导){
主视图(showMenu:self.$showMenu)
.框架(宽度:几何体.尺寸.宽度,高度:几何体.尺寸.高度)
.offset(x:self.showMenu?geometry.size.width/2:0)
.禁用(self.showMenu?真:假)
如果self.showMenu{
菜单视图(showMenu:self.$showMenu)
.框架(宽度:几何尺寸宽度/2)
.transition(.move(边:。前导))
}
}
.手势(拖动)..外观{
self.showMenu=false
}
}
.navigationBarTitle(“侧菜单”,显示模式:。内联)
.navigationBarItems(领先:(
按钮(操作:{
动画片{
self.showMenu.toggle()
}
}) {
图像(系统名称:“line.horizontal.3”)
.imageScale(.large)
}
))
}
}
}
结构主视图:视图{
@绑定变量showMenu:Bool
var body:一些观点{
按钮(操作:{
动画片{
self.showMenu=true
}
}) {
文本(“显示菜单”)
}
}
}
结构PlayerView:视图{
@状态变量showMenu=true
//@环境对象变量会话:会话存储
var body:一些观点{
VStack{
//self.showMenu=true
文本(“在此管理玩家”).foregroundColor(.red)
}
}
}
结构菜单视图:视图{
@绑定变量showMenu:Bool/=true
var body:一些观点{