Я загружаю свой TableView, когда получаю данные из SDK/API от Facebook. Я хочу заполнить свой tableView этими данными, но когда я звоню self.friendsTable.reloadData()
, он очень медленный и медленный, даже когда я добавил его в dispatch_async()
.Swift reloadData on TableView
Это getFriends()
функция в моем FacebookController
.
func getFriends(){
let friendsReq = FBSDKGraphRequest(graphPath: "me/taggable_friends", parameters: nil)
friendsReq.startWithCompletionHandler{
(connection, result, error) -> Void in
if error != nil{
let alertCtrl = UIAlertController(title: "Geen vrienden?", message: "We konden geen vrienden vinden..", preferredStyle: .ActionSheet)
let confirmAction = UIAlertAction(title: "Begrepen!", style: .Cancel, handler: { (action) -> Void in
// Do something?
})
alertCtrl.addAction(confirmAction)
self.presentViewController(alertCtrl, animated: true, completion: nil)
} else {
let data = result["data"]
for friend in data as! NSArray{
self.friendsNames.append(friend["name"] as! String)
self.friendsImages.append((friend["picture"]!!["data"]!!["url"] as? String)!)
}
dispatch_async(dispatch_get_main_queue(), {() -> Void in
self.tableView(self.friendsTable, numberOfRowsInSection: self.friendsNames.count)
self.friendsTable.reloadData()
return
})
}
}
}
А вот cellForRowAtIndexPath()
функция:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("FriendCell") as! FriendTableViewCell
dispatch_async(dispatch_get_main_queue(), {() -> Void in
let img = self.friendsImages[indexPath.row]
let imgUrl = NSURL(string: img)
let data = NSData(contentsOfURL: imgUrl!)
let image = UIImage(data: data!)
cell.friendName.text = self.friendsNames[indexPath.row]
cell.friendImage.image = image
})
return cell
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// Do something
return self.friendsNames.count
}
Загрузка данных в UIViews на cellForRow не имеет смысла находиться внутри блока отправки – Petar
Можете ли вы опубликовать все свои другие методы UTIabieViewDataSource и UITableViewDelegate? Может быть, это что-то в одном из них. – Antonio
Добавлено «numberOfRowsInSection» слишком – jbehrens94