我有一个UITableView
作为子视图的一部分。
在didSelectRowAtIndexPath
我想从subview
中移除superview
并处理文件。
我在didSelectRowAtIndexPath中做的第一件事是调用[myView removeFromSuperView];
然后我处理我的文件。
问题是在文件处理完毕之前,视图不会从superView
中删除。
有什么方法可以强制我的viewController
重绘所有视图吗?
也许我可以以某种方式阻止,直到视图被删除?
谢谢!
答案 0 :(得分:2)
UI更改作为runloop的一部分进行处理。听起来你正在主线程上同步处理文件。你不应该这样做。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) ^{
[self processFile:file];
})
答案 1 :(得分:0)
只需在主队列中执行 only UI工作即可。在Swift 3中:
DispatchQueue.main.async {
/* UI stuff */
}
但是全局队列中的处理文件:
DispatchQueue.global(qos: .default).async {
self.processFile(file)
}