Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 当前小部件扩展的问题_Ios_Swift_Ios App Extension - Fatal编程技术网

Ios 当前小部件扩展的问题

Ios 当前小部件扩展的问题,ios,swift,ios-app-extension,Ios,Swift,Ios App Extension,我的应用程序有一个Today小部件,但是有人告诉我它有一个问题 基本上,看起来正在发生的事情(我自己无法测试)是小部件有时只显示“无法加载”,而其他时候它只显示高度为0 我真的不明白为什么会这样。我已经在我的设备和模拟器上测试了几个星期了,从来没有遇到过这个问题 我想知道是否可能是因为刷新代码: func widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)!)

我的应用程序有一个Today小部件,但是有人告诉我它有一个问题

基本上,看起来正在发生的事情(我自己无法测试)是小部件有时只显示“无法加载”,而其他时候它只显示高度为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”即为真


有人知道这些问题的可能原因吗?

您是否使用自己的视图控制器和xib而不是脚本?如果是,则可能是您没有在视图控制器中设置preferredContentSize

尝试将以下代码放入您的视图控制器的init函数中:

    self.preferredContentSize = CGSizeMake(320, 100);
我今天刚刚开始扩展编程,所以我不确定它是否真的对你有帮助。以下是我自己的小部件中的结果:

如果您的扩展经常崩溃,则会显示“无法加载”消息。您可以尝试通过删除并再次添加扩展来重新启用它

  • 在今天的分机中按编辑按钮
  • 删除您的分机
  • 再次添加扩展名
    我发布了我的应用程序更新以解决另一个bug。我根本没有修改小部件代码,它似乎已经修复了它,所以它可能是一个iOS 8错误。如果用户尝试使用小部件而从未打开过应用程序,则仍会显示“无法加载”错误。那么,有没有办法更改此消息?@user3746428您可以创建一个
    NSUserDefaults
    键(谷歌如何读取应用程序和小部件之间的共享默认值),这是一个简单的
    BOOL
    ,指示您的应用程序是否已首先运行。当应用程序启动时检查按键,如果按键为
    false
    则显示一条消息,告诉用户先运行应用程序。