我已经使用自定义意图在我的应用程序中原型化了siri快捷方式。我想为不同的快捷方式类型定义自定义UI。例如,IntentA将显示带有很多标签的高牌,而IntentB将显示带有图像和一个标签的短卡。

我没有在MainInterface故事板上使用的IntentViewController和意图定义文件之间的代码中看到任何直接链接。

如果可能的话,我想在MainInterface故事板上定义IntentAViewController和IntentBViewController并进行相应的处理,但是我看不到告诉扩展为每个意图加载哪个viewcontroller或Storyboard ID的位置。

如果不可能,那么完成多个意图UI的最佳实践是什么? (我还没有找到意图不只一个的教程)。

最佳答案

我在Apple的SoupChef示例应用程序中找到了解决方案。由于只有一个主要的IntentViewController和一个MainInterface故事板,因此使用intents应该检测intent类型并添加必要的视图控制器作为IntentViewController的子级。

从SoupChef中的IntentViewController中:

/* Different UIs can be displayed depending if the intent is in the confirmation phase or the handle phase. This example uses view controller containment to manage each of the different views via a dedicated view controller. */ if interaction.intentHandlingStatus == .ready { let viewController = InvoiceViewController(for: intent) attachChild(viewController) completion(true, parameters, desiredSize) } else if interaction.intentHandlingStatus == .success { if let response = interaction.intentResponse as? OrderSoupIntentResponse { let viewController = OrderConfirmedViewController(for: intent, with: response) attachChild(viewController) completion(true, parameters, desiredSize) } }
(其中附加子项调用addChild,addSubview,didMove并设置约束)

关于ios - 如何为siri快捷方式的每个自定义意图使用不同的 View Controller ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51936071/

10-13 06:01