【问题标题】:how to handle background task?如何处理后台任务?
【发布时间】:2014-12-15 12:51:27
【问题描述】:

我是 iOS 新手。 我正在尝试在uitableview中逐行实现上传数据。 为此,我正在使用后台任务。

使用以下代码。

-(void)MethodUploadBgTaskAssign
 {
   dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            NSString *responseString = [self MethodlblUploadClicked];
            dispatch_async(dispatch_get_main_queue(), ^(void)
                           {
                              if([responseString isEqualToString:@"UploadSuccess"])
                               {
                                  [self ReloadTblData];
                                  [self ContinueUploadData];
                               }
                           });
        });
}

-(void) ReloadTblData
 {
    if([dataArr count]>0)
    [dataArr removeObjectAtIndex:0];

     [uitblData reloadData];
  }

 -(void) ContinueUploadData
 {
    if((dataArr count]>0)
    [self  MethodUploadBgTaskAssign];
 }

我的问题是在用空数据重新加载一些时间表后上传表中的数据 因为当时上传的所有数据。

我想在上传表格中的每个单元格后显示更新的用户界面。

对代码进行哪些必要的更改? 感谢您的帮助。

【问题讨论】:

  • 你要实现延迟加载吗?
  • 不,我正在尝试在第一个单元格中上传数据后在每个单元格中上传数据,删除该单元格并显示更新的 UI,然后继续上传第一行数据,直到完成所有行数据。
  • 这个方法是在cell还是controller中实现的?
  • 我在视图控制器中使用 uitableview
  • 你在哪里实现了上面的方法?在 tableviewcell 或视图控制器中?

标签: ios background-task


【解决方案1】:

在我看来,您好像在更新表格 - 但在错误的线程中(因此表格实际上似乎从未更新)。您需要使用 performSelectorOnMainThread 来更新 UI。

[self performSelectorOnMainThread:@selector(ReloadTblData:) // Update the table on the main thread
                       withObject:nil
                    waitUntilDone:NO];

我认为这应该可行 - 试一试!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    • 2016-06-11
    相关资源
    最近更新 更多