如何清除 SwiftUI 上 TabView 中的徽章
How to clear badge in TabView on SwiftUI
显示徽章很容易使用 .badge(content)
修饰符,但要删除它,.badge(nil)
修饰符不起作用,尽管显然是 docs 中的一个选项。
TabView {
VStack {
Text("Tab 1")
}
.tabItem {
Text("Tab 1")
}
.badge(1) // works as expected
VStack {
Text("Tab 2")
}
.tabItem {
Text("Tab 2")
}
.badge(nil) // doesn't work
VStack {
Text("Tab 3")
}
.tabItem {
Text("Tab 3")
}
.badge(elementsCount > 0 ? elementsCount : nil) // What I wan't to actually do, which of course also doesn't work
}
我没有得到什么?或者使用条件显示徽章的唯一选择是创建一个完全不同的视图路径,使用替代但相同的 tabitem 除了没有徽章?
标志不为零时显示。因此,以下工作:
TabView {
VStack {
Text("Tab 1")
}
.tabItem {
Text("Tab 1")
}
.badge(1) // works as expected
VStack {
Text("Tab 2")
}
.tabItem {
Text("Tab 2")
}
.badge(0) // badge not shown
VStack {
Text("Tab 3")
}
.tabItem {
Text("Tab 3")
}
.badge(elementsCount) // When zero, the badge is not shown
}
显示徽章很容易使用 .badge(content)
修饰符,但要删除它,.badge(nil)
修饰符不起作用,尽管显然是 docs 中的一个选项。
TabView {
VStack {
Text("Tab 1")
}
.tabItem {
Text("Tab 1")
}
.badge(1) // works as expected
VStack {
Text("Tab 2")
}
.tabItem {
Text("Tab 2")
}
.badge(nil) // doesn't work
VStack {
Text("Tab 3")
}
.tabItem {
Text("Tab 3")
}
.badge(elementsCount > 0 ? elementsCount : nil) // What I wan't to actually do, which of course also doesn't work
}
我没有得到什么?或者使用条件显示徽章的唯一选择是创建一个完全不同的视图路径,使用替代但相同的 tabitem 除了没有徽章?
标志不为零时显示。因此,以下工作:
TabView {
VStack {
Text("Tab 1")
}
.tabItem {
Text("Tab 1")
}
.badge(1) // works as expected
VStack {
Text("Tab 2")
}
.tabItem {
Text("Tab 2")
}
.badge(0) // badge not shown
VStack {
Text("Tab 3")
}
.tabItem {
Text("Tab 3")
}
.badge(elementsCount) // When zero, the badge is not shown
}