代码之家  ›  专栏  ›  技术社区  ›  AvaJ

UIRefreshControl在3秒结束后刷新

  •  2
  • AvaJ  · 技术社区  · 9 年前

    我有一个更新 UITableView 通过使用 UIRefreshControl 。但我希望在3秒钟后调用函数 EndRefreshing .

    func updateMyTable(){
    
        tableView.reloadData()
    
        //refreshTable.endRefreshing()  
    }
    
    2 回复  |  直到 9 年前
        1
  •  5
  •   Alessandro Ornano    8 年前

    我所知道的swift上可用的最佳延迟方法:

    func dispatchDelay(delay:Double, closure:()->()) {
        dispatch_after(
            dispatch_time(
                DISPATCH_TIME_NOW,
                Int64(delay * Double(NSEC_PER_SEC))
            ),
            dispatch_get_main_queue(), closure)
    }
    

    您的代码将是:

    func updateMyTable(){
        tableView.reloadData()
        dispatchDelay(3.0) {
           self.refresh.endRefreshing()
        }
    }
    

    更新Swit 3:

    func dispatchDelay(delay:Double, closure:@escaping ()->()) {
        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delay, execute: closure)
    }
    
        2
  •  1
  •   Balaji Ramakrishnan    9 年前

    尝试在延迟一段时间后使用以下方法调用该方法:

    self.performSelector(Selector(yourMethod), withObject: nil, afterDelay: 3)
    

    该方法将在3秒延迟后调用。因此,在更新表的位置添加这一行。

    希望能有所帮助。。