2016-10-13 2 views
0

Hallo ich habe diesen Zweifel kann ich eine Refresh-Steuerelement in einer anderen Klasse beenden? In meinem Tableviewcontroller ich habe dies:Wie kann ich die Aktualisierung in einer anderen schnellen Klasse beenden?

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 
    } 

und in meiner anderen Klasse .. habe dies:

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

// hier i meine Refresh enden soll Tableviewcontroller

}

}

Antwort

0

Sie können entweder benutzerdefinierteeinrichtenoder verwenden Sie NSNotifcationCenter. Ich bin mir nicht sicher, was Ihre TableViewController Beziehung mit WorkUpdater ist.

So zeige ich Ihnen eine mögliche Art, es mit NSNotifactionCenter zu tun. In Ihrem TableViewController, haben dies in viewDidLoad

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

Dann haben eine refreshCompleted func:

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

Auch die WorkUpdater mit diesem Update:

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