包含购物车的 SwiftUI 标签页视图

SwiftUI tab view with Shopping cart

提问人:Nus 提问时间:10/31/2023 更新时间:10/31/2023 访问量:36

问:

我在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)
            }
        }
    }
}

这是购物车按钮的预览并正确显示..

preview

这是选项卡视图的屏幕截图。正如我单击添加到购物车按钮时所显示的那样,它增加了购物车图像的计数并显示在 Botton 上。tabview

iOS SwiftUI购物车 SwiftUI标签视图

评论


答:

1赞 Sweeper 10/31/2023 #1

对选项卡项中显示的内容的控制非常少。你不能用 s 做花哨的事情。根据我的经验,SwiftUI 只是从您提供的视图中查找一些图像和一些文本,并以系统定义的方式显示它们。ZStack

也就是说,您正在重新发明徽章。选项卡栏上的这种“带有文本的红色圆圈”可以通过修改选项卡的视图(而不是 中的视图)来创建。tabItembadge(_:)

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
非常感谢。你能帮忙解决这个问题吗?