Скрыть пхуд HUD не работает на viewWillDissapear

У меня есть несколько функций вызова API в цепочке по мере необходимости, показывая hud-окна PKHUD, hud работает хорошо, но я не могу скрыть hud в viewWillDissapear, чтобы придать больше смысла, у меня есть profileViewController, который является частью UINavigationController, вложенного в tabBarcontroller в иерархии представления, подобной этой,

в profileVC у меня есть 3 функции для запроса данных из API-запроса, каждая из которых показывает hud как это.

    func loadData(){
        routeClient.instance.getProfile(success: {[weak self] data in
            guard let self = self else {return}
            do{
                let response = try JSONDecoder().decode(profile.self, 
                        if requestManager.instance.user.findHouse! == 0{
                            PKHUD.sharedHUD.contentView = PKHUDProgressView(title: "title", subtitle: "Subtitle")                                
                            PKHUD.sharedHUD.show()
                            self.loadHouse()
                        }else{                               
                            PKHUD.sharedHUD.contentView = PKHUDProgressView (title: "tittle", subtitle: "subtitle")
                            PKHUD.sharedHUD.show()
                            self.loadAnnounce()
                        }                       
                }
            }catch{
                print("error ocurrec in decoder \(error.localizedDescription)")
            }
        }, failure: {error in
            print("error in data load \(error.localizedDescription)")
        })
    }

затем в loadHouse и load объявляют функции с другим сообщением.

func loadHouse(){
    routeClient.instance.getHouseByprofile(success:{[weak self] data in
        guard let self = self else {return}
        PKHUD.sharedHUD.contentView = PKHUDProgressView(title: "Procesando infromacion", subtitle: "")
        PKHUD.sharedHUD.show()
        if requestManager.instance.user.findHouse == 0{
            do{
                let response = try JSONDecoder().decode(houseModel.self, from: data)
                if response.id != nil {
                    self.house = response
                    PKHUD.sharedHUD.contentView = PKHUDSuccessView(title: "title", subtitle: "")
                    PKHUD.sharedHUD.show()
                    PKHUD.sharedHUD.hide(afterDelay: 1.5)
                    self.tableview.reloadData()
                }else{
                    print("the is is nil")
                    PKHUD.sharedHUD.contentView = PKHUDTextView(text: "subtitle")
                    PKHUD.sharedHUD.show()
                    PKHUD.sharedHUD.hide(afterDelay: 1.5)
                    self.tableview.reloadData()
                }
            }catch{
                print("error en la decodificacion \(error.localizedDescription)")
                PKHUD.sharedHUD.contentView = PKHUDErrorView(title: "title,", subtitle: "subtitle")
                PKHUD.sharedHUD.show()
                PKHUD.sharedHUD.hide(afterDelay: 1.5)
                self.tableview.reloadData()
            }
        }else{
            do{
                let response = try JSONDecoder().decode(houseResponse.self, from: data)
                PKHUD.sharedHUD.contentView =  PKHUDErrorView(title: "title", subtitle: "subtitle")
                PKHUD.sharedHUD.show()
                PKHUD.sharedHUD.hide(afterDelay: 1.5)
                self.tableview.reloadData()
            }catch{
                PKHUD.sharedHUD.contentView = PKHUDErrorView(title: "title,", subtitle: "subtitle")
                PKHUD.sharedHUD.show()
                PKHUD.sharedHUD.hide(afterDelay: 1.5)
            }
            self.tableview.reloadData()
        }
    }, failure: {[weak self] error in
        guard let self = self else {return}
        print(error.localizedDescription)
        self.tableview.reloadData()
    })
}
func loadAnnounce(){
    routeClient.instance.getAnnounceByProfile(success: {[weak self] data in
        guard let self = self else {return}
        do{
            let json = try JSONDecoder().decode(getAnnounceResponse.self, from: data)
            PKHUD.sharedHUD.hide()
            if json.success!{
                requestManager.instance.announce = (json.data?.count)! > 0 ? json.data![0] : nil
                self.tableview.reloadData()
            }
        }catch{
            PKHUD.sharedHUD.hide()
            print(error.localizedDescription)
        }
    }, failure: {error in
        PKHUD.sharedHUD.hide()
        print(error.localizedDescription)
    })
}

все, что работает нормально, как и должно быть, - это изменить вкладку в tabbarcontroller, и hud еще не отображается в profileVC, а затем загружается в качестве profileVC, где был представленный viewController. то, что я пытался скрыть HUD, было следующим.

override func viewWillDisappear(_ animated: Bool) {
    //PKHUD.sharedHUD.hide()
    print("va a desaparecer")
    PKHUD.sharedHUD.hide()
    NotificationCenter.default.removeObserver(self, name: .didchangeTab, object: nil)
    self.navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
    //self.navigationController?.navigationBar.barTintColor = .clear//UIColor.init(red: 106/255, green: 172/255, blue: 82/255, alpha: 1)
}
override func viewDidDisappear(_ animated: Bool) {
    PKHUD.sharedHUD.hide()
}

но ничего не работает, также добавлено уведомление в центр уведомлений для наблюдателя, когда tabBarController меняет элемент панели вкладок, но даже hud не скрывает, это происходит только тогда, когда profileVC загружается в первый раз, и теперь отображается HUD, поэтому, если пользователь нажмет на следующий элемент панели вкладок, затем загружаются другие контроллеры представления, а затем отображается HUD. Я также проверяю утечки памяти, но не склеиваю, почему нет освобождения памяти от контроллера представления, даже когда viewWillDissappear выполняется.

0 ответов

Другие вопросы по тегам