SwiftUI中在列表中的Picker不可用

4

有人有解决方法吗? 我在我的List中有一个不响应任何用户输入且变灰的Picker,但如果我将它移出List并放到VStack中,它就能正常工作。

我发现大部分回答都说Picker必须在Form中才能正常工作(但我不理解为什么它在VStack中可以正常工作),或者这是一个错误,只有实际设备上才能正常工作,我也测试了一下,得到了相同的结果。

我会提供屏幕截图以及下面我使用的代码

Picker in simulator

import SwiftUI
struct SettingsView: View {
    
@Binding var age : Int

var body: some View {
        VStack(alignment: .leading){
                List{  
                        Picker("Your age", selection: $age) {
                                ForEach(1...100, id: \.self) { number in
                                    Text("\(number)")
                                           }
                                }
                    }
        }
}

3
表单/列表中的 Picker 需要 NavigationView 才能工作,因此需要将其包装在 NavigationView 中或更改其样式为 wheel。 - Asperi
谢谢,那个完美地解决了我的问题,滚轮选择器正是我想要的样子! - A-Fairooz
1个回答

2

您必须将List嵌入到NavigationView中,以便您可以从"Your age"导航到Int列表。

只需添加一个额外的层,如下所示:

    var body: some View {
        VStack(alignment: .leading){
            NavigationView {   // This is needed to navigate to the ForEach
                List {
                    Picker("Your age", selection: $age) {
                        ForEach(1..<101) { number in
                            Text("\(number)")
                        }
                    }
                }
            }
        }
    }

1
希望你不介意,我修正了你的ForEach范围语法。 - malhal
@malhal:没问题。那部分我只是从问题中复制的,没有检查过。幸好你发现了。 - HunterLion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接