gpt4 book ai didi

ios - WidgetKit 配置,一个参数基于另一个参数的选择

转载 作者:行者123 更新时间:2023-12-05 01:32:58 26 4
gpt4 key购买 nike

我正在开发一个带有两个动态参数的 WidgetKit WidgetKit 。其中一个参数仅限于第一个允许的选项。假设第一个是船长,第二个是船长的船。允许的配置可能是(忽略佳能):

Captains: [Kirk, Picard, Crunch]
Captain: Kirk, Ship: [Enterprise, Galileo]
Captain: Picard, Ship: [Enterprise, Voyager, Cube]
Captain: Crunch, Ship: [Sugar, Berry, Chocula]

我有逻辑工作。例如,如果用户选择 Picard,然后点击 Ship 按钮,则只有 Enterprise、Voyager 和 Cube 可用。然后用户可以选择其中一艘船(比如 Cube),一切都很好。

然而,当船长更换时,Ship 选项不会更改或重置。假设在上述设置之后,用户将船长更改为柯克。 Ship 仍设置为 Cube。用户可以退出 WidgetKit 的配置,就好像一切都很好,但这是一个无效的配置。

我希望发生的事情:当用户更改船长时,船舶将更改为该选定船长的第一个可用船舶选项。如果 Ship 空白(需要选择),或者 UI 强制提示 Ship(受可用选项限制),或者几乎任何其他可以防止无效组合的东西,我也没有问题。

有没有办法根据第一个参数的选择触发对第二个参数的编程更改?

不想在运行时 WidgetKit 中显示“无效组合”消息。我想我的备份是在用户做出无效选择时为他们选择一艘船,但这并不理想。

如果重要的话,真实 Widget 中的第一个参数(我上面示例中的船长)是真正动态的(通过 API 提供的字符串数组)。第二个参数(上面的 Ship)是一组固定的三个选项,其中任何一个、两个或所有三个都可以应用于第一个参数的任何选择。预计用户可能会创建多个具有不同配置的 Widget。

最佳答案

不幸的是,这个问题没有好的解决方案。

一个可能的解决方法是为每个船型创建单独的枚举。这意味着您将拥有 Captain 和 (KirkShip, PicardShip, CrunchShip).

enter image description here

然后您需要通过在 Relationship 部分定义 parent 参数 来有条件地显示它们。

这将允许您在 UI 上仅显示相关参数:

enter image description here

这是意图配置:

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

上述方法的问题是您需要手动将意图枚举映射到领域模型。这是一个可能的例子:

enum Ship: String {
case enterprise, galileo, voyager, cube // ...

init?(_ ship: KirkShip) {
switch ship {
case .unknown:
return nil
case .enterprise:
self = .enterprise
case .galileo:
self = .galileo
}
}

// more inits...
}

然后根据configuration.captain参数使用相关的船:

if configuration.captain == .kirk {
let ship = Ship(configuration.kirkShip)
// ...
}

关于ios - WidgetKit 配置,一个参数基于另一个参数的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65096539/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com