Как я могу закончить освежение в другом быстром классе?

Здравствуйте, у меня есть это сомнение, я могу закончить контроль обновления в другом классе? В моем tableviewcontroller у меня есть это:

func setRefreshGesture() {
let refreshGesture = UIRefreshControl()
refreshGesture.backgroundColor = UIColor.clearColor()
refreshGesture.tintColor = UIColor.whiteColor()
refreshGesture.addTarget(WorkUpdater.sharedInstance,action:#selector(WorkUpdater.attemptUpdateControl),forControlEvents:.ValueChanged)      
self.refreshControl = refreshGesture
self.refreshControl?.layer.zPosition = self.tableView.backgroundView!.layer.zPosition + 1
    }

и в моем другом классе.. есть это:

 func attemptUpdateControl(){
        if !isUpdating && canPerformUpdate() {
            isUpdating = true
            performUpdateControl()
        } else {
            print("ERROR: - Update in progress")
        }
    }

 func performUpdateControl(){
        let reach = Reachability.reachabilityForInternetConnection()!
        if reach.isReachable() {
        work.getData()
        } else {
            UIAlertView(title: "Device without connection", message: "You must have an internet connection to use this feature", delegate: nil, cancelButtonTitle: "OK").show()

// здесь я хочу закончить обновление tableviewcontroller

}

}

1 ответ

Решение

Вы можете настроить пользовательский Delegate или использовать NSNotifcationCenter, Я не уверен, что ты TableViewController отношения с WorkUpdater,

Итак, я показываю вам возможный способ сделать это с NSNotifactionCenter, В вашем TableViewControllerиметь это в viewDidLoad

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.refreshCompleted), name:"refreshCompleted", object: nil)

Тогда есть refreshCompleted FUNC:

func refreshCompleted() {
    refreshGesture.endRefreshing()      //you have to set it as a class var
}

Также обновите WorkUpdater с этим:

func performUpdateControl(){
    let reach = Reachability.reachabilityForInternetConnection()!
    if reach.isReachable() {
    work.getData()
    } else {
        UIAlertView(title: "Device without connection", message: "You must have an internet connection to use this feature", delegate: nil, cancelButtonTitle: "OK").show()
    }
    //add this        
    NSNotificationCenter.defaultCenter().postNotificationName("refreshCompleted", object: nil)
}
Другие вопросы по тегам