SwiftUI TabView 更多选项卡在第一次按下时崩溃
SwiftUI TabView More tab crashes first press
var body: some View {
TabView {
ScheduleView().tabItem {
Image(systemName: "calendar")
Text("Schedule")
}.tag(tbScheduleTag)
DutyBookView().tabItem {
Image(systemName: "books.vertical")
Text(dutyBookViewTabText)
}.tag(tbDutyBookTag)
TimetableView().tabItem {
Image(systemName: "calendar.badge.clock")
Text("Timetable")
}.tag(tbTimetableTag)
**... plus 7 other Tabs removed for post readability**
}
}
我的 TabView 创建了 10 个选项卡,因此我自动获得了“更多”TabItem。应用程序启动后,我先按下“更多”选项卡,然后选项卡崩溃回到“初始”选项卡。如果我先点击任何其他选项卡或再次点击更多选项卡,它加载正常。见附件演示。第一次选择它会在第二次工作时崩溃。
有什么建议吗?
我添加了 @State
变量并将其设置为 TabView
的 selection
属性。为了完成这项工作,我用新的 enum
值替换了您的标签。
struct ContentView: View {
enum Tab {
case schedule, dutyBook, timetable, locateTrain, settings
case tfLRestricted, subscription, serviceStatus, info, storedDuties
}
@State var tab: Tab = .schedule
var body: some View {
TabView(selection: self.$tab) { //this is the solution
ScheduleView().tabItem {
Image(systemName: "calendar")
Text("Schedule")
}.tag(Tab.schedule)
DutyBookView().tabItem {
Image(systemName: "books.vertical")
Text(dutyBookViewTabText)
}.tag(Tab.dutyBook)
// ...
}
}
}
var body: some View {
TabView {
ScheduleView().tabItem {
Image(systemName: "calendar")
Text("Schedule")
}.tag(tbScheduleTag)
DutyBookView().tabItem {
Image(systemName: "books.vertical")
Text(dutyBookViewTabText)
}.tag(tbDutyBookTag)
TimetableView().tabItem {
Image(systemName: "calendar.badge.clock")
Text("Timetable")
}.tag(tbTimetableTag)
**... plus 7 other Tabs removed for post readability**
}
}
我的 TabView 创建了 10 个选项卡,因此我自动获得了“更多”TabItem。应用程序启动后,我先按下“更多”选项卡,然后选项卡崩溃回到“初始”选项卡。如果我先点击任何其他选项卡或再次点击更多选项卡,它加载正常。见附件演示。第一次选择它会在第二次工作时崩溃。
有什么建议吗?
我添加了 @State
变量并将其设置为 TabView
的 selection
属性。为了完成这项工作,我用新的 enum
值替换了您的标签。
struct ContentView: View {
enum Tab {
case schedule, dutyBook, timetable, locateTrain, settings
case tfLRestricted, subscription, serviceStatus, info, storedDuties
}
@State var tab: Tab = .schedule
var body: some View {
TabView(selection: self.$tab) { //this is the solution
ScheduleView().tabItem {
Image(systemName: "calendar")
Text("Schedule")
}.tag(Tab.schedule)
DutyBookView().tabItem {
Image(systemName: "books.vertical")
Text(dutyBookViewTabText)
}.tag(Tab.dutyBook)
// ...
}
}
}