以编程方式更改 CPTabBarTemplate 的 selectedTemplate

Programmatically change selectedTemplate of CPTabBarTemplate

我正在尝试了解有关 CarPlay 车载的更多信息。具体使用 CPTabBarTemplate(2020 年的新模板和 iOS 14)。
我想要做的是以编程方式更改 selectedTemplate,就像我在 UITabBar.
中更新 selectedTab 一样 示例流程是带有两个选项卡的 CPTabBarTemplate。一个 CPPointOfInterestTemplate 和一个 CPInformationTemplate.

tabBarTemplate = CPTabBarTemplate(templates: [pointOfInterestTemplate, informationTemplate])

用户可以 select 一个兴趣点,然后从 poi 详细信息屏幕中选择一个可能显示“Select”的按钮,就像 Apple WWDC20 talk 中的示例一样。

按下“Select”后,我想以编程方式将用户带到 tabBarTemplateinformationTemplate,然后使用 selected 位置的详细信息来填充informationTemplate.

中的信息

我可能不理解 Apple 希望 CPTabBarTemplate 使用的方式。确实存在 CPTabBarTemplateselectedTab 属性。但是,属性 只是 get。这让我相信切换选项卡所需的方式是让用户自己点击下一个选项卡。

如有任何见解,我将不胜感激。 如果有人知道如何以编程方式更新 CPTabBarTemplate 的 selected 选项卡,那就太棒了。

感谢阅读!

我认为目前这不可能。 CPTabBarTemplate 的 public 接口非常短,但我什至无法通过调用 private api 使其工作。调用 tabTemplate.perform(Selector(("setIndexOfSelectedTab:")), with: 1) 和调用函数 tabTemplate.perform(Selector(("handleActionForControlIdentifier:")), with: tabTemplates[1].value(forKey: "identifier")) 都没有成功(即使使用正确选择的模板调用了选项卡栏委托函数)。