在具有动态数据的 WidgetKit 中,如何为新的小部件指定默认的 IntentConfiguration?

AVS*_*AVS 5 objective-c ios swift widgetkit swiftui

Apple Notes 小部件展示了理想的示例。添加 Apple Notes 小部件时,WidgetKit 会继续为新小部件分配一个 IntentConfiguration。您可以通过编辑小部件来查看这一点,并注意到选择元素不是“选择”,而是包含自动选择为新小部件默认值的笔记或文件夹的名称。您还会注意到,此占位符小部件的数据源不会从一个源更改为另一个源 - 分配的 IntentConfiguration 受到尊重。

我们如何在我们的小部件中做到这一点?它应该看起来像这样:有人创建了一个新的小部件,我们使用他们最近的数据项作为占位符,并且该项目 1) 保留在小部件中,直到他们更改它 2) 反映在编辑小部件对话框中。

Kio*_*Kio 8

我一直在寻找相同的内容,试图为动态类型设置默认值,因此想法是设置默认值,就像在意图定义文件中使用枚举一样。简短的回答我们需要在代码中设置动态类型默认值。

所以经过一番挖掘后发现了这个(我命令单击代码中的 ConfigurationIntent 引用并进入苹果自动生成的 ConfigurationIntent.swift)

/*! @abstract Default values for parameters with dynamic options
 @discussion Called to query the parameter default value.
 */
@available(iOS 14.0, macOS 10.16, watchOS 7.0, *)
@objc(defaultChartTypeForConfiguration:)    
optional func defaultChartType(for intent: ConfigurationIntent) -> Chart?
Run Code Online (Sandbox Code Playgroud)

这里我们有“可选基金defaultChartType”,所以我将其植入到将为您生成的intenthandler.swift中,然后您必须在其中添加代码来检索和返回动态类型。任何有关在小部件配置屏幕中显示动态的教程都应该涵盖这一点。所以现在在这个文件中我也刚刚添加了上面的可选函数。ChartType 是我在intentDefinition 文件中创建的动态类型。你的名字会有所不同以匹配你的名字

它是这样工作的。希望对您有所帮助,您可以遵循它。