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

问题描述

Apple Notes小部件展示了理想的示例。添加Apple Notes窗口小部件时,WidgetKit会继续进行,并将IntentConfiguration分配给新的窗口小部件。您可以通过编辑窗口小部件并注意到选择元素不会显示为“ Choose”(选择),而是包括便笺或文件夹的名称来看到此信息,该注释或文件夹的名称自动选择为新窗口小部件的认设置。您还会注意到,该占位符小部件的数据源并未从一个源更改为另一个源-遵守分配的IntentConfiguration。

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

解决方法

我一直在寻找相同的东西,试图为动态类型设置默认值,所以想法被设置为默认值,就像在意图定义文件中使用枚举一样。 简短的答案,我们需要在代码中设置动态类型默认值。

因此,在进行了一些挖掘之后(我在我的代码中单击了我的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?

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

及其工作方式。希望能对您有所帮助,您可以照做。