2015-10-05 2 views
2

Я звоню в службу поддержки. Они загружают данные в таблицу, пока я не прокручиваю. Я хочу перезагрузить данные, когда приходит ответ. Я новичок в Swift 2. Пожалуйста, помогите, чтобы какая-либо помощь была apperciated.Таблица не загружает данные до прокрутки

Вот мой код:

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 
     } 

    } 
+0

Показывайте методы таблицы делегата в вашем вопросе. –

+0

@AshishKakkad Я отправляю делегатов –

+0

вы используете 'sizeToFit' или' sizeThatFits: 'для просмотра таблиц в любом месте? Если да, удалите это. –

ответ

4

Вы работаете table.reloadData() из обработчика завершения. Скорее всего, код не выполняется в основном потоке. Все материалы пользовательского интерфейса должны быть выполнены в основном потоке. Попробуйте заставить reloadData работать на главной теме:

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

Что сказал MirekE, за исключением обновлялись Swift 3, Xcode 8.2:

DispatchQueue.main.async { 
    self.table.reloadData() 
} 
Смежные вопросы