首页 > 解决方案 > iOS tableView 在单击、滚动或切换标签栏项目之前不会重新加载

问题描述

我有这个问题,在执行 API 调用后(在几个地方),视图不会刷新,直到用户操作 - 如 btn 单击、标签栏切换等发生。我觉得它与线程有关,但我似乎无法弄清楚,而且我是 iOS 编程的新手。我用 DispatchQueue 等尝试了不同的解决方案,使用它,而不是使用它。试图在控制器视图上调用 setNeedsDisplay。但还没有运气。以下是从我的一个标签栏项目视图控制器中提取的代码示例:

 func getEmployeeUpdates(){

        self.showLoader()

        APIAdaptor.shared.getEmployeeUpdates(forEmployee: Session.shared.employee, completion: {


            (updates:[ScheduleUpdate]?, error:Error?) in



            guard error == nil else{

                DispatchQueue.main.async {

                    //  self.resetMainScreen()

                    self.hideLoader();

                }
                return
            }            

            DispatchQueue.main.async {
                self.hideLoader();
                self.ScheduleUpdates = updates!
                self.tableView.reloadData();                

            }        

        })

    }

  func showLoader(){

        NSLayoutConstraint.activate([

            activityIndicator!.centerXAnchor.constraint(equalTo: self.tableView.centerXAnchor),

            activityIndicator!.centerYAnchor.constraint(equalTo: self.tableView.centerYAnchor)])

        activityIndicator?.startAnimating();

    }



    func hideLoader(){

        print("Hiding");

        activityIndicator?.stopAnimating()

    }


我附上了两张图片。第一个图像是 api 调用已完成(通过测试确认)但视图未刷新的位置。装载机被冻结。它应该在调用 hideLoader() 后消失。第二张图片是点击后,或者标签栏项目切换。

我还应该提到,在这个例子中,以及在其他 api 调用中,视图最终会在完成后刷新,但只有在显着延迟之后。

如果有人可以提供帮助,我将不胜感激!

已加载,但不刷新视图加载,点击后,刷新

标签: iosswift

解决方案


这是由 Xcode 10.1 上的模拟器引起的问题。如果您遇到此问题,请尝试更新 Xcode,或使用真实设备。


推荐阅读