swift – 每次打开时刷新今日小工具

前端之家收集整理的这篇文章主要介绍了swift – 每次打开时刷新今日小工具前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我认为每天当我打开它时,它会调用“viewWillAppear”,但事实并非如此.当我在我的应用程序中更改某些内容,然后我向下滑动今天查看它有时会刷新视图,有时不会.

我在viewWillAppear中执行所有逻辑(从coreData获取数据并将该数据放到标签中),但不是每次都调用它.

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    fetchContent()
    setLabels()
    setContentHeight()
    tableView.reloadData()
    print("view will appear")
}

每次用户打开Today Extensions时如何调用fetchContent和setLabels?

对于这个问题,你应该使用NSWidgetProvinding的widgetPerformUpdateWithCompletionHandler.

脚步:

1.-确保您的UIViewController实现NCWidgetProviding

class MainViewController: UIViewController,NCWidgetProviding

2.-添加以下功能

func widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)) {
        // Perform any setup necessary in order to update the view.

        // If an error is encountered,use NCUpdateResult.Failed
        // If there's no update required,use NCUpdateResult.NoData
        // If there's an update,use NCUpdateResult.NewData

        completionHandler(NCUpdateResult.NewData)
    }

3.-在您的情况下,您将使用.NewData.

只需确保检索所需数据并刷新视图(将每个数据放在适当位置,填写标签,图表等).

调用函数期间,请不要看到您的视图不可见,iOS将填充视图并拍摄快照.

然后,这是在您打开通知中心时显示内容,直到您再次获得对应用程序的控制权.

So,in your case would be something like this:

func widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)) {
        fetchContent()
        setLabels()
        setContentHeight()
        tableView.reloadData()

        completionHandler(NCUpdateResult.NewData)
    }
原文链接:https://www.f2er.com/swift/319453.html

猜你在找的Swift相关文章