我使用UICollectionView
,当用户点击某个单元格时,会运行一个特定的流程。由于此过程可能需要几秒钟,因此我希望在此过程即将开始时立即向用户显示一些处理消息。
总体思路如下:
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
DispatchQueue.main.async {
self.someView.isHidden = false
print("showing processing message is about to start")
}
// some process runs here which may take a few seconds to finish
DispatchQueue.main.async {
self.someView.isHidden = true
print("hidding processing message")
}
}
由于某些未知原因,对主线程的调用是在didSelectItemAt
完全完成后执行的,因此处理消息几乎在它出现的同时消失。
有人知道我在这里缺少什么吗?
谢谢:)
答案 0 :(得分:1)
您在问题中描述的内容似乎正常,因为您在主线程上调用了事件free(a->array[0])
,因此您输入的代码已被截断。
如果您希望在完成流程时隐藏someView
,最好在someView
someView
期间隐藏someView
在您打算运行的流程的完成时关闭没有隐藏。