我在视图中有一个tableview,列出了将要执行的所有步骤。我想在步骤执行时显示标记的步骤。我面临的问题是,在程序执行所有步骤之前,tableview不会刷新。因此,所有步骤都显示为同时标记。
这是我的功能,当用户按下按钮时开始运行:
-(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是tableview IBOutlet。我也试过[self.view setNeedsDisplay]和[self。 MyTableView setNeedsDisplay]但这也不起作用。我也尝试从tableview获取单元格并对单元格进行更改。在程序完全执行完毕之前,没有任何内容会刷新......
有人能告诉我我做错了什么吗?我是iOS开发的新手,我搜索,阅读,尝试过...但到目前为止还没有找到答案。
答案 0 :(得分: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];
});
});
}