将今日小部件添加到今日视图时,它会正确绘制。但是,如果您的用户稍后再回来,则不会调用viewDidLoad函数,而是显示过时的数据。应该每次调用viewDidLoad吗?是否有iOS 9 / Xcode 7 beta 6错误?
编辑: 添加了未调用的widgetPerformUpdateWithCompletionHandler。我有断点设置和打印功能
func widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)) {
print("in widgetPerformUpdateWithCompletionHandler")
fetch()
completionHandler(NCUpdateResult.NewData)
}
答案 0 :(得分:5)
当您在屏幕上滚动窗口小部件时,相同的控制器实例将在短时间内重复使用(在我的测试中似乎是~30秒),viewDidLoad
和{{1}不会被调用。
但是,每次显示小部件时都会调用widgetPerformUpdateWithCompletionHandler:
和viewWillAppear
。
答案 1 :(得分: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")
}
}