首页 > 解决方案 > SwiftUI 自定义选取器标签未呈现

问题描述

更新到 iOS 15 和 Xcode 13 后,我的应用程序中的选择器不再显示自定义标签。在 iOS 14 设备上运行应用程序,选择器渲染良好。

这是当前实现的代码片段,屏幕截图是它当前在 iOS 15 模拟器中的样子。

    @State var selectedNumber: Int = 0
    
    var body: some View {
        Picker(selection: $selectedNumber, label: customLabel) {
            ForEach(0..<10) {
                Text("\($0)")
            }
        }
    }
    
    var customLabel: some View {
        HStack {
            Image(systemName: "paperplane")
            Text(String(selectedNumber))
            Spacer()
            Text("⌵&quot;)
                .offset(y: -4)
        }
        .foregroundColor(.white)
        .font(.title)
        .padding()
        .frame(height: 32)
        .background(Color.blue)
        .cornerRadius(16)
    }

截屏

标签: iosswiftswiftui

解决方案


@Adam 提供的答案有效。以下是我为防止其他人偶然发现问题所做的修复。

    @State var selectedNumber: Int = 0
    
    var body: some View {
        Menu {
            Picker(selection: $selectedNumber, label: EmptyView()) {
                ForEach(0..<10) {
                    Text("\($0)")
                }
            }
        } label: {
            customLabel
        }
    }
    
    var customLabel: some View {
        HStack {
            Image(systemName: "paperplane")
            Text(String(selectedNumber))
            Spacer()
            Text("⌵&quot;)
                .offset(y: -4)
        }
        .foregroundColor(.white)
        .font(.title)
        .padding()
        .frame(height: 32)
        .background(Color.blue)
        .cornerRadius(16)
    }

推荐阅读