【发布时间】:2015-01-23 06:20:51
【问题描述】:
我的小部件开发介于两者之间。因为我们已经将我们的应用程序与小部件集成放在了一起。但是现在,我在 iOS 中遇到了今天的小部件的问题。我已经为两种情况编写了代码。第一次当小部件在应用程序启动时首次加载时,它会调用 Web 服务并通过 Internet 获取数据,然后我们将它们存储到用户默认值中以供以后使用。
现在,当下次用户下拉通知菜单时,我们首先向用户显示我们旧存储的内容,然后我们从 web-service 获取它并存储在 user-default 中,然后再次重新加载表。
对于上述操作,我在某些情况下面临表格内容大小问题、闪烁问题和“无法加载”消息。
现在看看下面的代码,我在下面的方法中进行网络调用,在网络服务响应之后,我只处理完成处理程序。
- (void)widgetPerformUpdateWithCompletionHandler:(void (^)(NCUpdateResult))completionHandler {
// Perform any setup necessary in order to update the view.
// If an error is encountered, use NCUpdateResultFailed
// If there's no update required, use NCUpdateResultNoData
// If there's an update, use NCUpdateResultNewData
[self getBookedAppointmentsNew:completionHandler];
}
所以,请与我分享您的经验和想法。
【问题讨论】:
-
为了清楚起见,您正在调用您的 Web 服务,并且在调用完成之前您不会调用完成处理程序?
-
是的,我做同样的事情。我调用 web-service 并在服务完成后,使用完成处理程序完成它。
-
实际上,我每次都需要调用网络服务来为客户获取我的最新事件,但在我获取它们之前,我会尝试向客户显示之前获取的数据。因此,屏幕闪烁的可能性不大。我想用没有任何副作用的新内容刷新视图。
标签: ios ios-app-extension ios8-extension ios8-today-widget ios-extensions