Today Widget 扩展的问题
Posted
技术标签:
【中文标题】Today Widget 扩展的问题【英文标题】:Issues with Today Widget extension 【发布时间】:2014-09-21 02:27:32 【问题描述】:我的应用有一个 Today Widget,但有人告诉我它存在问题。
基本上,似乎正在发生的事情(我无法自己测试)是小部件有时只会显示“无法加载”,而其他时候它只会显示高度为 0。
我真的不明白为什么会这样。我已经在我的设备和模拟器上测试了几周,从未遇到过这个问题。
我想知道它是否可能归结为刷新代码:
func widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)!)
// Perform any setup necessary in order to update the view.
var defaults = NSUserDefaults(suiteName: "group.AffordIt")
var newCheck = defaults.boolForKey("new")
if newCheck == true
completionHandler(NCUpdateResult.NewData)
else
completionHandler(NCUpdateResult.NoData)
每当我的应用中需要在小部件中显示的内容发生变化时,'newCheck' 为真。
有谁知道这些问题的可能原因是什么?
【问题讨论】:
【参考方案1】:如果您的扩展程序经常崩溃,则会出现“无法加载”消息。您可以尝试通过删除并再次添加扩展来重新启用它。
【讨论】:
我发布了对我的应用程序的更新以解决另一个错误。我根本没有修改小部件代码,而且它似乎已经修复了它,所以它可能是一个 ios 8 错误。如果用户尝试使用小部件但尚未打开应用程序,仍然会显示“无法加载”错误。那么有什么办法可以改变这条消息吗? @user3746428 您可以创建一个NSUserDefaults
键(Google 如何读取应用程序和小部件之间的共享默认值),它是一个简单的BOOL
,指示您的应用程序是否已首先运行。在您的应用启动时检查密钥,如果它是 false
,则显示一条消息,告诉用户首先运行应用。【参考方案2】:
您是否使用自己的视图控制器和 xib 而不是情节提要?如果是,可能是您没有在视图控制器中设置 preferredContentSize。
尝试将以下代码放入你的视图控制器的init函数中:
self.preferredContentSize = CGSizeMake(320, 100);
我今天刚刚开始扩展编程,所以我不确定它是否真的对你有帮助。这是我自己的小部件中的结果:
【讨论】:
【参考方案3】:-
在今天的扩展程序中按编辑按钮
删除您的扩展程序
再次添加您的扩展程序。
【讨论】:
以上是关于Today Widget 扩展的问题的主要内容,如果未能解决你的问题,请参考以下文章
从 iOS 8 Today Widget 访问 PFIzer 当前用户
将数据从 Core Data 加载到 Today Widget