如何在 SwiftUI 上的 TabView 中清除徽章

How to clear badge in TabView on SwiftUI

提问人:Alejandro 提问时间:4/16/2022 更新时间:4/16/2022 访问量:314

问:

使用修饰符显示徽章很容易,但要删除它,修饰符不起作用,尽管显然是文档中的一个选项。.badge(content).badge(nil)

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
}

我没有得到什么?或者,使用条件显示锁屏提醒的唯一选项是创建完全不同的视图路径,其中包含一个备用但相同的选项卡项,但没有锁屏提醒?

Swift SwiftUI 徽章

评论


答:

2赞 HunterLion 4/16/2022 #1

当徽章不为零时,将显示徽章。因此,以下工作原理:

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
}