如何在另一个快速课程中结束刷新?

Posted

技术标签:

【中文标题】如何在另一个快速课程中结束刷新?【英文标题】:How can I end refreshing in another swift class? 【发布时间】:2016-10-13 23:21:54 【问题描述】:

您好,我有这个疑问,我可以在另一个类中结束刷新控制吗? 在我的 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。我不确定您的TableViewControllerWorkUpdater 是什么关系。

所以我向您展示了一种使用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)

【讨论】:

以上是关于如何在另一个快速课程中结束刷新?的主要内容,如果未能解决你的问题,请参考以下文章

如何在另一个网站显示 OBIEE 报告的上次刷新状态?

如何在另一页面的事件中重新加载或刷新一个页面的存储数据

jquery如何在另一个结束后使用多个ajax调用

如何刷新CDIView以反映在另一个CDIView中所做的更改?

jQuery:在另一个 jquery 操作后刷新 div?

如何在另一个函数中使用一个类