Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios &引用;无法加载";今日消息';s小部件_Ios_Ios App Extension_Ios8 Extension_Ios8 Today Widget_Ios Extensions - Fatal编程技术网

Ios &引用;无法加载";今日消息';s小部件

Ios &引用;无法加载";今日消息';s小部件,ios,ios-app-extension,ios8-extension,ios8-today-widget,ios-extensions,Ios,Ios App Extension,Ios8 Extension,Ios8 Today Widget,Ios Extensions,我的小部件开发介于两者之间。因为我们已经将我们的应用程序与小部件集成。但在现在的几天里,我面临着iOS中今天的小部件的问题。我已经为两个案例编写了代码。第一次当小部件首次加载应用程序启动时,它调用web服务并通过internet获取数据,然后我们将它们存储到用户默认值中供以后使用 现在,当用户下一次下拉通知菜单时,我们首先向用户显示旧的存储内容,然后从web服务获取它并存储在用户默认值中,然后再次重新加载表 对于上述操作,我面临表的内容大小问题、闪烁问题以及某些情况下的“无法加载”消息。 现在看

我的小部件开发介于两者之间。因为我们已经将我们的应用程序与小部件集成。但在现在的几天里,我面临着iOS中今天的小部件的问题。我已经为两个案例编写了代码。第一次当小部件首次加载应用程序启动时,它调用web服务并通过internet获取数据,然后我们将它们存储到用户默认值中供以后使用

现在,当用户下一次下拉通知菜单时,我们首先向用户显示旧的存储内容,然后从web服务获取它并存储在用户默认值中,然后再次重新加载表

对于上述操作,我面临表的内容大小问题、闪烁问题以及某些情况下的“无法加载”消息。

现在看看下面的代码,我在下面的方法中进行一个web调用,在web服务响应之后,我只处理完成处理程序

- (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];
}

因此,请与我分享您的经验和想法。

最后,我找到了解决问题的方法。请看下面的代码

在viewDidLoad()方法中,我刚刚将视图的首选内容大小设置为启动时显示底部视图所需的基本高度,然后调用web服务来获取数据。获取数据后,我再次设置了TodayWidget视图的首选内容大小

-(void)viewDidLoad
{
    [super viewDidLoad];
    self.bottomView.frame = CGRectMake(self.bottomView.frame.origin.x, 0.0, self.bottomView.frame.size.width, self.bottomView.frame.size.height);
    self.preferredContentSize = CGSizeMake(self.view.frame.size.width, self.bottomView.frame.size.height);
    [self getBookedAppointmentsNew];
}

-(void)getBookedAppointmentsNew
{
    //-- After web-service response (positive/negative), I have set again the preferred content size.
    self.bottomView.frame = CGRectMake(self.bottomView.frame.origin.x, self.scrollView.frame.size.height, self.bottomView.frame.size.width, self.bottomView.frame.size.height);
    self.preferredContentSize = CGSizeMake(self.view.frame.size.width, (self.bottomView.frame.origin.y + self.bottomView.frame.size.height));
}

我已经按照上面的步骤解决了关于“无法加载”和“屏幕闪烁”的今日扩展问题。

一般来说,每当小部件崩溃时,我都会看到“无法加载”消息。小部件尝试加载自己,如果它反复崩溃,那么它只会显示“无法加载”消息。调试小部件并确保没有任何东西导致其崩溃

小部件界面的布局约束可能不唯一。
没有任何布局约束的视图可能会剪裁其内容或与其他视图重叠。

请澄清,您正在调用web服务,并且直到调用完成后才调用完成处理程序?是的,我也会这样做。。我调用web服务,在服务完成时,我使用完成处理程序完成它。实际上,我每次都需要调用web服务来为客户获取我的最新事件,但在获取这些事件之前,我将尝试向客户显示以前获取的数据。因此,屏幕不可能闪烁。我想用没有任何副作用的新内容刷新视图。很好的方法,我的目标是“self.view.frame.size.width”,我已经解决了小部件中的问题,但它仍然显示“无法加载”。事实证明,如果小部件崩溃足够多次,iOS甚至没有尝试加载它。我必须重新启动手机,然后再加载。谢谢你的提示!