2016-10-13 1 views
0

Bonjour im ayant ce doute puis-je mettre fin à un contrôle de rafraîchissement dans une autre classe? Dans mon tableviewcontroller j'ai ceci:Comment puis-je terminer rafraîchir dans une autre classe rapide?

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 
    } 

et dans mon autre classe .. ont ceci:

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() 

// ici je veux terminer mon rafraîchissement de tableviewcontroller

}

}

Répondre

0

Vous pouvez soit configurer personnalisé Delegate ou utilisez NSNotifcationCenter. Je ne suis pas sûr quelle est votre relation TableViewController avec WorkUpdater.

Donc je vous montre une façon possible de le faire avec NSNotifactionCenter. Dans votre TableViewController, dans cette viewDidLoad

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

Ensuite, une refreshCompleted func:

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

mettent à jour la WorkUpdater avec ceci:

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) 
}