ios - 为什么某些 View 在 WidgetKit 中显示为红色的禁止进入标志?

标签 ios swift swiftui swiftui-list widgetkit

我在 xcode 12 中创建了一个项目并添加了一个 WidgetKit 扩展目标。目标已创建,我只剩下一个显示时间的简单 WidgetKit 。 WidgetKit 的预览按预期工作,并且 WidgetKit 在模拟器中按预期显示。但是,如果我更改 View 以使用 List而不是 Text , 像这样:

struct SimpleWidgetEntryView : View {
    var entry: Provider.Entry

    var body: some View {
        List {
            Text("Something")
        }
    }
}
预览和模拟器都在黄色背景上显示红色的禁止进入标志:
The No Entry sign shown in the xcode 12 preview
我试过把 ListVStack 内并使用动态列表没有任何成功。我找不到任何关于 List 的文档在 WidgetKit 中被禁止。我试过重新启动 xcode 和模拟器,清理和重建。我正在使用 xcode 12.0 beta 3。
~我在尝试使用 UIView 时也遇到了这个问题包裹在 UIViewRepresentable . View 是 LineChartView来自图表库。~ 编辑:根据this post on the Apple developer forums无法在 WidgetKit WidgetKit 中使用 UIKit View 。
有谁知道我如何使用 List在 WidgetKit 中?非常感谢任何帮助。谢谢

最佳答案

背景
WidgetKit View 为 静态 .
他们不支持动画、导航和用户交互 (Link 除外)。它们必须用纯 SwiftUI 编写。

WidgetKit 中不允许的 View 列表
请注意,该列表并不详尽,主要提供示例:

  • 互动 View (您可以与之交互的 View ,例如,通过触摸它们):
  • List
  • Form
  • ScrollView
  • TabView
  • Map
  • Picker
  • Slider
  • 等等...

  • 动画 意见:
  • ProgressView

  • 导航 View (您不能使用标准导航 - 为此您有 Link ):
  • NavigationView
  • NavigationLink

  • UIKit 包装器 对于 UIKit View / View Controller :
  • UIViewRepresentable
  • UIViewControllerRepresentable


  • 替代品
    如果您想使用上述任何 View ,例如像 List 这样的交互式 View ,您需要从非交互式 View 中创建它 - 这里是 VStack + ForEach .

    关于ios - 为什么某些 View 在 WidgetKit 中显示为红色的禁止进入标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63135404/

    相关文章:

    ios - Facebook SDK 4.4.0 logInWithReadPermissions无法在iOS 9的iPhone上使用

    SwiftUI 安全字段 : How to achieve the same character obscuring behaviour as in UIKit?

    ios - 如何通过 SwiftUI 按钮在 UIViewController 中执行函数?

    ios - MapKit-如何添加放置图钉的位置约束?

    c# - 你如何从 xamarin 中的绝对 NSURL 加载文件

    string - 如何检查一个字符是否是 Swift 中的空格字符?

    ios - UITableViewCell 中突出显示链接电子邮件的 Textview 会更改 TintColor 几秒钟

    ios - 如何将 UIButton 连接到选项卡栏 Controller 中的特定选项卡?

    json - 如何在 SwiftUI 中解码来自 API 的 JSON 响应以在 View 中使用

    ios - 在 React Native 中设置 ListView 的高度