首页 > 解决方案 > 如何在 SwiftUI 中使用 Checkbox 创建文本?

问题描述

我需要带有文本字段的复选框(✅ 如待办事项列表)。目前我已经创建了如下按钮对象:

    Button(action: {
            // do when checked / unchecked
            //...
    }) {
        HStack(alignment: .top, spacing: 10) {

            Rectangle()
                .fill(Color.white)
                .frame(width:20, height:20, alignment: .center)
                .cornerRadius(5)
            Text("Todo  item 1")
        }
    }

我需要在 SwiftUI中保存checked和声明。unchecked

复选框示例图像

标签: iosswiftcheckboxswiftui

解决方案


这是我创建的一个简单的、可重复使用的复选标记组件,它遵循与 iOS 上的其他复选标记类似的配色方案(例如,在消息应用程序中选择消息):

import SwiftUI

struct CheckBoxView: View {
    @Binding var checked: Bool

    var body: some View {
        Image(systemName: checked ? "checkmark.square.fill" : "square")
            .foregroundColor(checked ? Color(UIColor.systemBlue) : Color.secondary)
            .onTapGesture {
                self.checked.toggle()
            }
    }
}

struct CheckBoxView_Previews: PreviewProvider {
    struct CheckBoxViewHolder: View {
        @State var checked = false

        var body: some View {
            CheckBoxView(checked: $checked)
        }
    }

    static var previews: some View {
        CheckBoxViewHolder()
    }
}

您可以在其他视图中使用它,如下所示:

...
@State private var checked = true
...

HStack {
    CheckBoxView(checked: $checked)
    Spacer()
    Text("Element that requires checkmark!")
}
...

推荐阅读