SwiftUI:无法在TabView中访问编辑模式
我目前有一个视图SwiftUI:无法在TabView中访问编辑模式,swift,swiftui,Swift,Swiftui,我目前有一个视图HostView,它提供HostSummaryView和EditHostSummaryView,其中前者响应editMode.wrappedValue?==。不活动主机视图如下所示: struct HostView: View { @Environment(\.editMode) var editMode var body: some View { HStack { EditButton() }
HostView
,它提供HostSummaryView
和EditHostSummaryView
,其中前者响应editMode.wrappedValue?==。不活动
<代码>主机视图如下所示:
struct HostView: View {
@Environment(\.editMode) var editMode
var body: some View {
HStack {
EditButton()
}
if editMode?.wrappedValue == .inactive {
HostSummary()
} else {
EditHostSummary()
}
}
}
struct RootView: View {
@State private var selectedTab = 0
var body: some View {
TabView(selection: $selectedTab) {
View1()
.onTapGesture { self.selectedTab = 0 }
.tag(0)
View2()
.tag(1)
HostView()
.tag(2)
}
}
}
我有一个RootView
,其中包含一个TabView
,如下所示:
struct HostView: View {
@Environment(\.editMode) var editMode
var body: some View {
HStack {
EditButton()
}
if editMode?.wrappedValue == .inactive {
HostSummary()
} else {
EditHostSummary()
}
}
}
struct RootView: View {
@State private var selectedTab = 0
var body: some View {
TabView(selection: $selectedTab) {
View1()
.onTapGesture { self.selectedTab = 0 }
.tag(0)
View2()
.tag(1)
HostView()
.tag(2)
}
}
}
我尝试将@Environment(\.editMode)var editMode
传递给HostView
,但这并没有解决问题。编辑按钮
不会在主机视图
中切换编辑模式
。但是,HostView
在我通过非选项卡视图
视图访问它时起作用
我如何才能让它工作?我找不到以前关于这个问题的问题,但众所周知,有些东西在
选项卡视图中不起作用,您必须将其向下推到视图中
我认为这是一个错误
struct EditableHost: View {
@State private var selectedTab = 0
var body: some View {
TabView(selection: $selectedTab) {
Text("View 1")
.onTapGesture { self.selectedTab = 0 }
.tag(0)
Text("View 2")
.tag(1)
ParentHostView()
.tabItem { Text("host") }
.tag(2)
}
}
}
struct ParentHostView: View {
@State var active: Bool = true
var body: some View {
NavigationView{
NavigationLink(
destination: HostView(),
isActive: $active,
label: {
Text("HOST")
})
}.navigationViewStyle(StackNavigationViewStyle())
}
}
struct HostView: View {
@Environment(\.editMode) var editMode
var body: some View {
VStack{
HStack {
EditButton()
}
if editMode?.wrappedValue == .inactive {
Text("HostSummary")
} else {
Text("EditHostSummary")
}
}.navigationBarBackButtonHidden(true)
}
}