swift - 菜单项左侧的复选标记

标签 swift swiftui

我正在制作一个菜单,其中所选项目有一个复选标记。 现在,复选标记位于右侧::

Button(action: {
    self.categoryIndex = index
    self.selectedCategory = category
  }, label: {
  Text(category)
  if selectedCategory == categories[index] {
    Image(systemName: "checkmark")
  }                               
})

我需要左侧的复选标记,如下图所示: Dropdown with checkmarks on left side of selections 如何实现像照片这样的选择?

最佳答案

可能有更多方法可以做到这一点,但这里有两个选择:

使用选择器

    Picker("Menu", selection: $selection) {
        ForEach(1..<5, id: \.self) { number in
            Text("Option \(number)")
        }
    }
    .pickerStyle(MenuPickerStyle())

将显示如下(iOS/MacOS):

enter image description here


使用切换

这稍微涉及一些,因为您想在选择上绑定(bind)某种操作(假设您需要一个单个选择,如上所述),所以我不知道这是否值得麻烦,但出于教学原因,这里是:

struct CheckedMenu: View {
    @State private var selection = "1"
    var body: some View {
        Menu("Menu") {
            Toggle("Option 1", isOn: bindingForOption("1"))
            Toggle("Option 2", isOn: bindingForOption("2"))
        }
    }
    
    private func bindingForOption(_ option: String) -> Binding<Bool> {
        Binding<Bool>(get: { selection == option }, set: { if $0 { selection = option } })
    }
}

将显示如下(iOS/MacOS):

enter image description here


最后,值得注意的是,第二个选项(切换)允许同时检查多个(不相关)项目,这对于“选项”菜单来说是更好的选择,例如:

enter image description here

关于swift - 菜单项左侧的复选标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74504998/

相关文章:

ios - 从 SwiftUI 列表访问底层 UITableView

SwiftUI displayModeButtonItem 内部管理

swiftui - 带有 SwiftUI 的 Google 地方自动完成 API

ios - vImageMatrixMultiply_ARGB8888ToPlanar8 在构建 Release模式 iOS 应用程序时不起作用

ios - 应用程序 :openURL:options: not called after opening universal link

ios - 从 UITableView 转到 UITabBarController

inheritance - 在 Swift 中使用泛型、协议(protocol)和继承创建对象时的 EXC_BAD_ACCESS

ios - Swift 获取字符串中 2 个字符串之间的字符串

swift - 一个渐变到另一个 SwiftUI 的动画过渡

ios - 在 SwiftUI 中添加圆角半径时如何隐藏背景颜色的溢出?