我已经成功地使用自定义意图在我的应用程序中制作了 Siri 快捷方式原型(prototype)。我想为不同的快捷方式类型定义自定义用户界面。例如,IntentA 将显示一张带有大量标签的高卡片,而 IntentB 将显示一张带有图像和一个标签的短卡片。
我在 MainInterface Storyboard中使用的 IntentViewController 和意图定义文件之间的代码中没有看到任何直接链接。
如果可能,我希望在 MainInterface Storyboard中定义 IntentAViewController 和 IntentBViewController 并相应地处理它们,但我不知道在哪里告诉扩展为每个意图加载哪个 View Controller 或 Storyboard id。
如果不可能,那么完成多个 Intent UI 的最佳实践是什么? (我还没有找到任何具有多个意图的教程)。
最佳答案
我在 Apple 的 SoupChef 示例应用程序中找到了解决方案。由于只有一个主 IntentViewController 和一个 MainInterface Storyboard,因此使用意图,您应该检测意图类型并添加必要的 View Controller 作为 IntentViewController 的子。
来自 SoupChef 中的 IntentViewController:
/* 根据意图是处于确认阶段还是处理阶段,可以显示不同的 UI。
此示例使用 View Controller 包含通过专用 View Controller 来管理每个不同的 View 。
*/
如果交互.intentHandlingStatus == .ready {
让 viewController = InvoiceViewController(for: 意图)
附加子( View Controller )
完成(真,参数,期望大小)
} 否则如果交互.intentHandlingStatus == .success {
如果让response=interaction.intentResponse为?订单汤意向响应 {
让 viewController = OrderConfirmedViewController(for: 意图, with: 响应)
附加子( View Controller )
完成(真,参数,期望大小)
}
}
(其中 Attach child 调用 addChild、addSubview、didMove 并设置约束)
关于ios - 如何为 Siri 快捷方式的每个自定义意图使用不同的 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51936071/