【问题标题】:Swift 2 refresh table view contents [closed]Swift 2 刷新表视图内容 [关闭]
【发布时间】:2016-04-25 12:18:41
【问题描述】:

我编写了一个“刷新”方法,它应该在表格视图中显示新项目,但它似乎没有正确地重新加载单元格。

func refresh(sender:AnyObject) {
    page = 1
    self.data_request()
}


func data_request(){
    let user_id = Data[0].valueForKey("user_id") as? String!

    let url:NSURL = NSURL(string: "http://..../perspective/\(user_id!)/page/"+"\(page)" )!

    let session = NSURLSession.sharedSession()
    self.page = self.page + 1


    let request = NSMutableURLRequest(URL: url)
    request.HTTPMethod = "GET"
    request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringCacheData


    let task = session.dataTaskWithRequest(request) {
        (let data, let response, let error) in

        guard let _:NSData = data, let _:NSURLResponse = response  where error == nil else {
            print("error")
            return
        }

        var json: AnyObject?

        do {
            json = try NSJSONSerialization.JSONObjectWithData(data!, options: [])
        } 
        catch {
            return
        }

        guard let data_array = json as? NSArray else {
            return
        }

        for i in 0..<data_array.count
        {
            if let add = data_array[i] as? NSDictionary
            {   
                self.obj.append(Obj(data:add))
            }
        }

        dispatch_async(dispatch_get_main_queue(), { () -> Void in   
            self.tableView.reloadData()
        })
     }
    task.resume()  
}

它不会更新单元格。

它就是这样,没有加载数据

【问题讨论】:

  • 你的意思是什么不起作用?如果refresh() 打电话?然后data_request()?
  • 为什么要在 dispatch_async 中重新加载表视图?你试过没有它吗?
  • @tmac99 那么你的问题是什么?我认为最好的选择是删除这个问题并考虑你真正想问的问题。在问题中包含您知道的所有信息。看看这里stackoverflow.com/help/how-to-ask

标签: ios swift2 pull-to-refresh


【解决方案1】:

应用下面的代码重新加载表格视图,我希望这对你有帮助。

dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), { () -> Void in

      self.tableView.reloadData()                      
})

dispatch_sync(dispatch_get_main_queue(), { () -> Void in   

      self.tableView.reloadData()
})

【讨论】:

  • 我的 data_request() 中已经有了这个?
  • @tmac99 我认为有异步方法而不是同步。正确的?但是你试过这种同步方法吗?
  • 它坚持“拉动刷新”
  • 好的,你最初是在表格视图中获取数据吗?不使用拉刷新?
  • @tmac99 那么您应该使用断点检查 tableview 委托方法,并使用断点检查 data_request()。逐行遍历,然后只有你会得到实际的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-03
  • 1970-01-01
相关资源
最近更新 更多