-1

在我的今日通知中心扩展/小部件中,每次激活通知中心时,我都需要更新部分 UI。在使用通知中心时,它永远不需要更新,也不需要在后台更新。我应该以什么方法放置该代码?

viewDidLoad并且viewWillAppear在每次显示时都会被调用,例如,如果您向上和向下滚动它们将再次被调用,所以这太频繁了。

widgetPerformUpdateWithCompletionHandler在第一次显示之前根本不会调用它(至少在 iOS 8.2 测试版中),并且只要 iOS 感觉更新 UI 时,就会自动调用此方法,即使它在后台也不合适。

loadView仅被调用一次,除非从内存中删除小部件,否则永远不会再次调用。因此,如果您打开通知中心并查看小部件,然后关闭通知中心并稍后重新打开它,它可能不会再次调用该方法,具体取决于它是否已从内存中清除。

4

1 回答 1

0

我只是使用viewDidLoad而不担心多次通话的可能性。除非该方法需要很长时间才能运行,否则没有理由不这样做。[如果它确实需要很长时间才能运行,那么你今天的扩展将会很糟糕,所以修复它。]

如果出于某种原因您只希望它发生一次,BOOL请在类中添加一个 ivar。将其设置为YESininitWithCoder:然后在 中viewDidLoad,检查该值。如果是YES,请进行更新并将值设置为NO。如果它已经是NO,请跳过您的更新。

于 2015-01-04T22:54:34.313 回答