提问人:Nus 提问时间:10/31/2023 更新时间:10/31/2023 访问量:36
包含购物车的 SwiftUI 标签页视图
SwiftUI tab view with Shopping cart
问:
我在swiftUI中有视图。我有选项卡视图列表。这是我想做的.当我单击添加到购物车按钮时,我希望购物车值增加并且工作正常,但问题是计数显示在选项卡视图的底部,我希望它像预览一样显示在购物车视图的顶部,它显示正确。
这是主视图..
import SwiftUI
struct MainView: View {
@EnvironmentObject var order: Order
var body: some View {
TabView {
OrderView()
.tabItem {
CartButton(numberOfProducts: order.product.count)
}
}
}
}
这是购物车按钮视图。
import SwiftUI
struct CartButton: View {
var numberOfProducts: Int
var body: some View {
ZStack(alignment: .topTrailing) {
Image(systemName: "cart")
.padding(.top, 5)
if numberOfProducts > 0 {
Text("\(numberOfProducts)")
.font(.caption2).bold()
.foregroundColor(.white)
.frame(width: 15, height: 15)
.background(Color(hue: 1.0, saturation: 0.89, brightness: 0.835))
.cornerRadius(50)
}
}
}
}
这是购物车按钮的预览并正确显示..
这是选项卡视图的屏幕截图。正如我单击添加到购物车按钮时所显示的那样,它增加了购物车图像的计数并显示在 Botton 上。
答:
1赞
Sweeper
10/31/2023
#1
对选项卡项中显示的内容的控制非常少。你不能用 s 做花哨的事情。根据我的经验,SwiftUI 只是从您提供的视图中查找一些图像和一些文本,并以系统定义的方式显示它们。ZStack
也就是说,您正在重新发明徽章。选项卡栏上的这种“带有文本的红色圆圈”可以通过修改选项卡的视图(而不是 中的视图)来创建。tabItem
badge(_:)
var body: some View {
TabView {
OrderView()
.tabItem {
Image(systemName: "cart")
}
// this also automatically hides the badge when 0
.badge(order.product.count)
}
}
锁屏提醒仅显示在列表行、菜单和标签栏中,因此,如果您想在其他地方使用此类按钮,您仍然可以使用您的视图。CartButton
评论
0赞
Nus
10/31/2023
非常感谢。你能帮忙解决这个问题吗?
0赞
Nus
10/31/2023
stackoverflow.com/questions/77392356/......
评论