【问题标题】:Display Multiple views in Picker在选取器中显示多个视图
【发布时间】:2021-10-23 23:58:43
【问题描述】:

我试图在所选选项旁边的Picker 中显示单词,但这些单词从未正确显示。我希望用户能够单击文本也能够打开Picker。我尝试将文本放在选择器之外,这会导致正确显示,但文本不可点击。 我正在使用 Xcode 13 Beta 5iOS15

struct ContentView: View {
    @State var fruit = "Apple"
    let fruits = ["Apple","Orange","Pear","Grape"]
    
    var body: some View {
        HStack {
            Picker(selection: $fruit) {
                Text("Picked:")
                ForEach(fruits, id: \.self){ fruit in
                    Text(fruit)
                }
            } label: {
                Text("")
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

Picker 的图片,Picker 之外的文字

根据我的要求进行的调整如下所示。任何放在标签内的东西现在都可以点击了。

Menu {
    Picker(selection: $fruit, label: EmptyView()) {
        ForEach(fruits, id: \.self) { fruit in
            Text(fruit)
        }
    }
} label: {
      HStack {
          Image(systemName: "hand.thumbsup.fill")
          Text("Picked: \(fruit)")
      }
}

【问题讨论】:

    标签: swift swiftui ios15


    【解决方案1】:

    使用带有内联PickerMenu 作为其内容:

    Menu {
        Picker(selection: $fruit, label: EmptyView()) {
            ForEach(fruits, id: \.self) { fruit in
                Text(fruit)
            }
        }
        .labelsHidden()
        .pickerStyle(InlinePickerStyle())
    } label: {
        HStack {
            Text("Picked:")
            Text(fruit)
        }
    }
    

    【讨论】:

    • 这可以满足我的需要,如果我稍微调整一下我希望 Picked 可以显示并可点击。我可以在菜单标签内添加任何视图组合,并使整个内容可点击。
    • 正确,菜单“标签”内的任何内容都可以点击。
    • 此方法似乎不会将列表自动居中于所选值。长列表超出屏幕是个问题。
    猜你喜欢
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多