簡體   English   中英

SwiftUI 不帶 label 的選取器視圖

[英]SwiftUI Picker view without label

編輯:我嘗試在表單之外使用 WheelPickerStyle,但是我想要的是相同的想法,實際選項而不是 label,而是作為列表。 就像在我的表單示例中一樣,它非常完美,除了它有一個 label 我必須單擊才能到達那里。

我有一個應用程序,它有一個按鈕,可以將我重定向到另一個視圖,如下所示:

Button(action: {
                        self.isAddDrinkView.toggle()
                    }) {
                        Image(systemName: "plus.circle")
                            .resizable()
                            .aspectRatio(contentMode: .fit)
                            .frame(width: 100, height: 100, alignment: .center)
                            .foregroundColor(.black)
                            .padding(.bottom, 50.0)
                    }

現在,這個另一個視圖應該是一個列表,您可以從中選擇一個,並且只能選擇一個元素。

我試着這樣做:

struct AddDrinkView: View {
    @ObservedObject var context: Context
    var body: some View {
        NavigationView{
            Form{
            Picker(selection: $context.selectedItems, label: Text("Select a drink"), content: {
                ForEach(context.items){
                    Text("\($0)")
                }
            }).pickerStyle(DefaultPickerStyle())
            .navigationBarTitle("Select a Drink")
            }.labelsHidden()
        }
    }
}

但是,我的問題是這向我顯示了一個帶有選擇器和隱藏 label 的視圖。 我根本不想要這個 label,我希望選擇器選項在我進入這個視圖時立即顯示,而不必單擊 label。

我怎樣才能做到這一點? 這適用於 ios 13+ 如果可能的話,另一個選擇是如果我能以某種方式使第一個按鈕成為選擇器選項視圖的觸發器,但我仍然不知道如何實現這一點。

這是Form呈現默認樣式選擇器的一種方式。 嘗試改用WheelPickerStyle

Picker(selection: $context.selectedItems, label: Text("Select a drink"), content: {
    ForEach(context.items){
        Text("\($0)")
    }
}).pickerStyle(WheelPickerStyle())      // << here !!

您可以將菜單用作 Label

  Menu("Drop Your Label Here") {
                    Picker("Please choose a color", selection: $selectedColor)
                    {
                        ForEach(colors, id: \.self) {
                            Text($0)
                        }
                    }
                    
                }
                //.foregroundColor(Color.init("Red"))
                .foregroundColor(Color.red)
            }.frame(width: 300, height: 60)

您可以在初始化為EmptyView()時設置 label 屬性。

Picker(selection: $context.selectedItems, label: EmptyView()) {
    ForEach(colors, id: \.self) {
        Text($0)
    }
}

如果您要為label屬性使用空Text ,它將顯示一個空欄,至少在使用pickerStyle(.inline)時。 如果您使用EmptyView ,則沒有空欄,您可以在沒有 label 的情況下顯示選擇器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM