我正在使用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完全完成之后执行的,因此处理消息几乎在它出现的同时消失。

有人知道我在这里想念的吗?

谢谢 :)

最佳答案

根据您输入的代码,由于在主线程上调用了someView,因此您在问题中所描述的内容似乎是正常的。

如果希望在进程完成时隐藏someView,则最好在不隐藏someView的情况下将someView隐藏在要运行的进程的完成关闭中。

08-26 10:26