chn*_*ski 15 swift widgetkit swiftui swiftui-list ios14
我正在尝试使用 iOS 14 小部件并遇到一个奇怪的问题。当我List在小部件视图中使用 a 时,我的小部件没有加载。如果我用HStack,VStack等一切工作正常。
为了举例,这里有一些简单的代码:
struct WidgetView: View {
var body: some View {
List {
Text("Test 1")
Text("Test 2")
}
}
}
Run Code Online (Sandbox Code Playgroud)
同样,这一切都适用于其他元素,这只发生在List.
J A*_*ngo 10
List 有一个小部件不支持的滚动功能,小部件只显示静态视图,请尝试使用 forEach。
struct SomeView: View {
var body: some View {
HStack {
ForEach(1..<5) { index in
otherView()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以根据需要和设计使用 HStack 或 VStack。
Widgets不支持滚动,这个限制在苹果的meet Widget视频中有讲到(视频中可以快进到12:02)
我遇到了完全相同的问题,有两个部分可以解决这个问题
Identifiable协议或至少有一个字段作为主键示例:假设您有一个名为 Task 的结构
struct Task: Identifiable {
let title,id:String
}
Run Code Online (Sandbox Code Playgroud)
这是TimelineEntry结构的样子
struct TaskEntry: TimelineEntry {
let tasks: [Task]
let date: Date
}
Run Code Online (Sandbox Code Playgroud)
完成此操作后,您可以使用ForEach循环来使用数组构建视图
struct ToDoAppWidgetEntryView : View {
var entry: Provider.Entry
var body: some View {
VStack{
ForEach(entry.tasks, id:\.id){
item in
Text(item.title)
Divider()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是预览的样子
| 归档时间: |
|
| 查看次数: |
2042 次 |
| 最近记录: |