iOS 9 今日小部件未调用 viewDidLoad 方法

6
当将今日小部件添加到今日视图中时,它会正确显示。但是如果用户稍后回到它,viewDidLoad函数不会被调用,因此显示的数据是旧的。应该每次都调用viewDidLoad吗?这是iOS 9 / Xcode 7 beta 6的bug吗?
编辑:还没有调用widgetPerformUpdateWithCompletionHandler函数。我已经设置了断点和打印函数。
func widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)) {
    print("in widgetPerformUpdateWithCompletionHandler")
    fetch()

    completionHandler(NCUpdateResult.NewData)
}

我从未使用过小部件,但通常情况下 viewDidAppear 在每次屏幕呈现时被调用,而 viewDidLoad 仅在视图最初加载时被调用。 - SpaceDust__
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - soulshined
3
我也有同样的问题。widgetPerformUpdateWithCompletionHandler曾经在小组件每次显示时被调用。但是在iOS9中,这个方法被调用的频率要少得多。但我没有找到任何关于这个变化的文档说明。 - just.do.it
2个回答

5
当您将小部件滚动到屏幕上并再次滚动回来时,相同的控制器实例将被重用一段时间(在我的测试中大约为30秒),而且不会调用viewDidLoadwidgetPerformUpdateWithCompletionHandler:
但是,每次显示小部件时都将调用viewWillAppearviewDidAppear

这个对我也解决了问题。 - Rand
谢谢,是的,我改成了viewDidAppear,现在一切正常,谢谢 :) - Supertecnoboff

0

我发表了自己的答案,但希望讨论这段代码-它是否应该存在或如何正确地执行?我们在这个方法中使用了它,但是通过删除它,小部件开始正常工作了。

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator)
{

    super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)

    if let safeCoordinator = coordinator as UIViewControllerTransitionCoordinator?
    {
        print("coordinator != nil")
        safeCoordinator.animateAlongsideTransition({ context in
            self.tableView.frame = CGRectMake(0, 0, size.width, size.height)
            }, completion: nil)

    }
    else
    {
        print("coordinator == nil")
    }
}

这段代码看起来像你正在尝试调整表视图的大小以响应其他内容改变了视图的高度。那个“其他”是什么?如果你正在使用自动布局,你的表视图应该随着它显示的单元格数目进行调整。否则,你可以设置preferredContentSize来指定你想要的确切高度。 - Christopher Pickslay
@ChristopherPickslay 苹果不鼓励使用preferredContentSize吗? - Supertecnoboff
1
@Supertecnoboff 据我所知没有:如果您不使用自动布局,您可以使用UIViewController的preferredContentSize属性来请求小部件的高度。https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/Today.html#//apple_ref/doc/uid/TP40014214-CH11-SW5 - Christopher Pickslay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接