簡體   English   中英

SwiftUI 選擇器填充問題 - 選擇器中的 ForEach 循環不填充

[英]SwiftUI Picker population problem - ForEach Loop in picker does not populate

我有 SwiftUI 和 XCode 11.2.1 環境。

在下面的代碼中,ForEach 循環顯示標題,列表也顯示,它的工作原理:

struct Todo: Codable, Identifiable {
    let userId, id: Int
    let title: String
    let completed: Bool

    enum CodingKeys: CodingKey {
        case userId, id, title, completed
    }
}
// SOME STUFF HERE ...
struct ContentView: View {
// SOME STUFF HERE...
    var body: some View {

            NavigationView {
                VStack (spacing: 15){

                     Text("Number of items: \(todoData.todos.count)"

                    ForEach(self.todoData.todos) { str in Text(String(str.title));}  // works

                    List(self.todoData.todos) { todo in
                        Text(todo.title) // works
                    }

但是,以下 ForEach 循環根本不顯示文本,我在其中使用了 todoData.todos.count:

ForEach(0 ..< (todoData.todos.count)) {
                    Text(String(self.todoData.todos[$0].userId))
                    }

來到 Picker 人群,當我使用以下內容時:

Picker( selection: $selectedItem, label: Text("MyItems"), content:
                {
                    ForEach(self.todoData.todos) { str in Text(str.title);}
                }
                )

=-- 除了“MyItems”選擇器名稱和選擇器列表的 2 個空行之外,沒有顯示任何內容。

任何建議/幫助將不勝感激。

=-- 該

data is as follows:
[
    {
           "userId": 1,
           "id": 1,
           "title": "delectus aut autem",
           "completed": false
       },
       {
           "userId": 1,
           "id": 2,
           "title": "quis ut nam facilis et officia qui",
           "completed": false
       },
       {
           "userId": 1,
           "id": 3,
           "title": "quis ut nam facilis et officia qui",
           "completed": false
       },
    {
           "userId": 2,
           "id": 4,
           "title": "quis ut nam facilis et officia qui",
           "completed": false
       }

   ]

你可以試試這個,它適用於我的 Xcode:

@State var selectedItem: String = ""

var body: some View {

        NavigationView {
            VStack (spacing: 15){

                 Text("Number of items: \(todos.count)")

                ForEach(self.todos) { str in Text(String(str.title));}  // works

                List(self.todos) { todo in
                    Text(todo.title) // works
                }

                ForEach(0 ..< (todos.count)) {
                Text(String(self.todos[$0].userId))
                    }

                Picker(selection: self.$selectedItem, label: Text("MyItems")) {
                    ForEach(self.todos) { str in Text(str.title).tag(str.title) ;}
                }
            }}}}

暫無
暫無

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

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