在Scroll之前,表不会重新加载数据

时间:2015-10-05 04:32:12

标签: ios swift swift2

我正在打电话给网络服务。他们在表格中加载数据,直到我滚动。我希望在响应到来时重新加载数据。我是Swift 2中的新手请帮助任何帮助。

这是我的代码:

  let url : String = String(format: "http://api.nytimes.com/svc/news/v3/content/nyt/all/720.json?api-key=%@",apiKey)

   t url1: NSURL = NSURL(string: url)!

  let session = NSURLSession.sharedSession()

    let task1 = session.dataTaskWithURL(url1, completionHandler: {
        (data, response, error) -> Void in

        do {
            let jsonData = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as! NSDictionary

            self.dict = jsonData;

            self.array1 = (self.dict.objectForKey("results") as? NSMutableArray)!
            print(self.array1)
        self.table.reloadData()

        } catch {
        }
    })
    task1.resume()


  extension ViewController1: UITableViewDelegate, UITableViewDataSource {

       }                      func tableView(tView: UITableView, numberOfRowsInSection section: Int) -> Int {

            return self.array1.count
        }

        func tableView(tView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
            let identifier = "CustumCell"
            var cell: CustumCell! = tView.dequeueReusableCellWithIdentifier(identifier) as? CustumCell
            if cell == nil {
                var nib:Array = NSBundle.mainBundle().loadNibNamed("CustumCell", owner: self, options: nil)
                cell = nib[0] as? CustumCell
            }

                       cell.label.text = self.array1.objectAtIndex(indexPath.row).objectForKey("abstract") as? String

            return cell
        }

    }

2 个答案:

答案 0 :(得分:4)

您正在从完成处理程序运行table.reloadData()。可能是代码没有在主线程上执行。所有UI内容都需要在主线程上完成。尝试强制reloadData在主线程上运行:

dispatch_async(dispatch_get_main_queue()) {
    self.table.reloadData()
}

答案 1 :(得分:2)

MirekE说的是什么,除了为Swift 3更新,Xcode 8.2:

DispatchQueue.main.async {
    self.table.reloadData() 
}