SwiftUI Picker 填充问题 - 选择器中的 ForEach 循环不填充
Posted
技术标签:
【中文标题】SwiftUI Picker 填充问题 - 选择器中的 ForEach 循环不填充【英文标题】:SwiftUI Picker population problem - ForEach Loop in picker does not populate 【发布时间】:2019-11-26 23:11:05 【问题描述】:我有 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 循环根本不显示 Text,我使用了 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
]
【问题讨论】:
【参考方案1】:你可以试试这个,它适用于我的 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) ;
【讨论】:
感谢您的澄清。似乎我需要将整个内容包含在一个 FORM 中才能正常工作。这似乎也解决了我的问题。以上是关于SwiftUI Picker 填充问题 - 选择器中的 ForEach 循环不填充的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI 和 Picker 和 FireStore 返回文档 ID 不下降