在 iOS 8 Today Extension 中从 Storyboard 加载特定的 ViewController

Posted

技术标签:

【中文标题】在 iOS 8 Today Extension 中从 Storyboard 加载特定的 ViewController【英文标题】:Load specific ViewController from Storyboard in iOS 8 Today Extension 【发布时间】:2014-09-19 15:09:40 【问题描述】:

我正在开发一个应用程序,它为通知中心提供了一个新的 Today Extension/Widget,因为 ios 8 添加了这个功能。

但是,我需要扩展在几个不同的视图控制器之间进行选择,所有这些都设置在 Storyboard 中,基于一个简单变量的值。因此,如果用户在主应用程序中进行更改,此变量将具有不同的值,因此 Today Extension 应该加载不同的初始视图控制器。

我已经阅读了类似的问题及其解决方案,因此我尝试在扩展情节提要上设置一个虚拟视图控制器作为初始视图控制器,创建多个指向其他视图控制器的模态 segues,并为它们都指定了一个标识符名称,在 segues 上禁用动画并为虚拟视图控制器实现了一个自定义类。然后这个类在viewDidAppear: 中调用performSegueWithIdentifier: sender:nil。 但是,这似乎不适用于今天的扩展,当我在模拟器中测试它时只显示“无法加载”。

编辑: 好吧,我做错了什么,它确实有效。但是每次打开通知中心时,显示的视图控制器的内容会在几毫秒内消失并重新出现,因为再次加载了虚拟视图控制器。此外,在呈现其他视图控制器之一时,扩展高度不会改变。

我可以做些什么来实现今天扩展的预期行为?

【问题讨论】:

【参考方案1】:

您能否使用 TableViewController,并将不同的逻辑放入 TableCell 而不是 ViewController。很容易针对tableView(tableView:, cellForRowAtIndexPath:) 中的变量选择不同的TableCell

【讨论】:

以上是关于在 iOS 8 Today Extension 中从 Storyboard 加载特定的 ViewController的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 8 Today Extension 中获取 parse.com 用户数据时出现异常

如何通过 Today Extension (iOS 8) 访问 Core Data/CloudKit

在 iOS 8 Today Extension 中从 Storyboard 加载特定的 ViewController

iOS 8 Today Extension:是不是可以添加可编辑的文本字段?

iOS扩展Extension之Today

在 iOS Today Extension 中绘制而不滚动整个 NC