-1

我在视图中有一个表格视图,其中列出了将执行的所有步骤。我想在执行步骤时显示一个已标记的步骤。我面临的问题是表格视图在程序执行完所有步骤之前不会刷新。因此,所有步骤同时显示为标记。

这是我的功能,当用户按下按钮时开始运行:

-(void)Initialiseer {
    //do something for the first step
    [self.MyTableView reloadData];
    [self.MyView setNeedsDisplay];

    //do something for the second step
    [self.MyTableView reloadData];
    [self.MyView setNeedsDisplay];

    //do something for the third step
    [self.MyTableView reloadData];
    [self.MyView setNeedsDisplay];
}

MyView 是视图 IBOutlet。MyTableView 是表视图 IBOutlet。我也试过 [self.view setNeedsDisplay] 和 [self.view setNeedsDisplay]。MyTableView setNeedsDisplay] 但这也不起作用。我还尝试从表格视图中获取单元格并对单元格本身进行更改。在程序完全执行完成之前,什么都不会刷新...

有人可以告诉我我做错了什么吗?我是 iOS 开发的新手,我搜索、阅读、尝试过……但到目前为止还没有找到答案。

4

1 回答 1

0

我认为您需要阅读运行循环和setNeedsDisplay(我认为这不会达到您的预期)。基本上,在您的代码完成执行之前,UI 不会更新。显示复杂计算所需的模式如下所示:

-(void)Initialiseer {
  dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0), ^{
    //do something for the first step

    dispatch_sync(dispatch_get_main_queue(), ^{
      [self.MyTableView reloadData];
    });

    //do something for the second step
    dispatch_sync(dispatch_get_main_queue(), ^{
      [self.MyTableView reloadData];
    });

    //do something for the third step
    dispatch_sync(dispatch_get_main_queue(), ^{
      [self.MyTableView reloadData];
    });
  });
}
于 2015-05-29T17:53:46.270 回答