我正在尝试使用iOS 14小部件,但有一个奇怪的问题。在窗口小部件视图中使用List
时,窗口小部件未加载。如果我使用的是HStack
,VStack
等,一切正常。
为示例起见,下面是一些简单的代码:
struct WidgetView: View {
var body: some View {
List {
Text("Test 1")
Text("Test 2")
}
}
}
同样,这一切都可以与其他元素很好地配合,只有List
才会发生这种情况。
答案 0 :(得分:6)
列表具有窗口小部件不支持的滚动功能,窗口小部件仅显示静态视图,而尝试使用forEach。
struct SomeView: View {
var body: some View {
HStack {
ForEach(1..<5) { index in
otherView()
}
}
}
}
您可以根据需要和设计使用HStack或VStack。
答案 1 :(得分:3)
窗口小部件不支持滚动,meet widget video of apple中讨论了此限制(您可以在视频中快进至12:02)
我遇到了完全相同的问题,有两个部分可以解决此问题
Identifiable
协议的要求,或者至少有一个字段充当主键示例:假设您有一个名为Task的结构
struct Task: Identifiable {
let title,id:String
}
这是TimelineEntry
结构的样子
struct TaskEntry: TimelineEntry {
let tasks: [Task]
let date: Date
}
完成此操作后,您可以使用ForEach
循环使用数组构造视图
struct ToDoAppWidgetEntryView : View {
var entry: Provider.Entry
var body: some View {
VStack{
ForEach(entry.tasks, id:\.id){
item in
Text(item.title)
Divider()
}
}
}
}
这是预览的样子