SVProgressHUD直到显示UITableView才显示

时间:2017-11-22 02:39:10

标签: ios swift uitableview svprogresshud

我正在尝试使用SVProgressHUD来指示应用程序正忙。

我的代码现在是:

        SVProgressHUD.show()
        DispatchQueue.global(qos: .background).async {
            parser.parse()
            print("start reloading")
            self.protocolTableView.reloadData()

            print("end reloading")
            SVProgressHUD.dismiss()
        }

我收到了这个警告:

UITableView.reloadData() must be used from main thread only

在解析完成后显示tableView需要很长时间。

如何在读取主线程解析后更新tableView?

谢谢, 巴特

4 个答案:

答案 0 :(得分:1)

XMLParser.parse可以阻止用户界面。尝试在后台线程上执行此操作:

DispatchQueue.global(qos: .background).async {
    parser.parse()
}

答案 1 :(得分:1)

UI更新应该在主线程中完成:

SVProgressHUD.show()
DispatchQueue.global(qos: .background).async {
    parser.parse()
    print("start reloading")

    DispatchQueue.main.async(execute: {() -> Void in
        self.protocolTableView.reloadData()
        SVProgressHUD.dismiss()
    })
}

答案 2 :(得分:0)

 DispatchQueue.main.async {
        self.protocolTableView.reloadData()
        }

在主线程中重新加载tableView。

答案 3 :(得分:0)

这是解决方案:

SVProgressHUD.show()
DispatchQueue.global(qos: .background).async {
    parser.parse()

    DispatchQueue.main.sync {
        self.protocolTableView.reloadData()
    }

    SVProgressHUD.dismiss()
}

感谢所有帮助!!

相关问题