【发布时间】:2020-10-06 15:34:07
【问题描述】:
我有一个超过 5 个选项卡的选项卡视图,在 SwiftUI 中它会自动创建一个更多选项卡来显示额外的选项卡。这一直运作良好。 但是,我想设置用户在打开应用程序时看到的第一个选项卡,所以我添加了一个 EnviromentObject 来存储所选选项卡。这允许我设置用户看到的第一个选项卡并以编程方式更改选项卡。例如,在其中一个选项卡上,用户上传了一张需要一段时间才能处理的图像,因此当上传图像时,该功能会更改所选选项卡,然后更改用户视图。
这一切都很好,但是现在更多选项卡不再工作,它尝试显示更多页面,但然后轻弹回到 EnviromentObject 中的选项卡选择。
我怎样才能阻止这种行为?
我的标签视图:
struct BasicView: View {
@EnvironmentObject var screenCoordinator: ScreenCoordinator
@State var climbs:ClimbListData?
@State var selection = 2
var body: some View {
TabView(selection: $screenCoordinator.selection) {
NavigationView{
VStack{
Text("Search")
}.navigationBarTitle("Climbers Log", displayMode:.inline)
}.tabItem{
Image(systemName:"magnifyingglass")
Text("Search")
}.tag(0)
NavigationView{
VStack{
MapView()
}.navigationBarTitle("Climbers Log", displayMode:.inline)
}.tabItem{
Image(systemName: "map.fill")
Text("Map")
}.tag(1)
NavigationView{
VStack{
ClimbList()
}.navigationBarTitle("Climbers Log", displayMode:.inline)
}.tabItem{
ScalledImage(name: "climbericon", size: CGSize(width: 24, height: 24))
Text("Climbs")
}.tag(2)
NavigationView{
VStack{
AddAClimb()
}
}.tabItem{
Image(systemName:"plus")
Text("Add Climb")
}.tag(6)
NavigationView{
VStack{
Text("Log")
}.navigationBarTitle("Climbers Log", displayMode:.inline)
}.tabItem{
Image(systemName:"book.fill")
Text("Log")
}.tag(3)
NavigationView{
VStack{
Text("Profile")
}.navigationBarTitle("Climbers Log", displayMode:.inline)
}.tabItem{
Image(systemName:"person.circle")
Text("Profile")
}.tag(4)
NavigationView{
VStack{
Text("Settings")
}.navigationBarTitle("Climbers Log", displayMode:.inline)
}.tabItem{
Image(systemName:"gear")
Text("Settings")
}.tag(5)
NavigationView{
VStack{
Text("Stats")
}.navigationBarTitle("Climbers Log", displayMode:.inline)
}.tabItem{
ScalledImage(name: "stats", size: CGSize(width: 24, height: 24))
Text("Stats")
}.tag(7)
}.edgesIgnoringSafeArea(.top).navigationTitle("").navigationBarHidden(true)
}
}
我的环境对象:
class ScreenCoordinator: ObservableObject {
@Published var selection = 2
}
【问题讨论】:
标签: swiftui