2015-06-05 3 views
1

Это, как я создаю свои клетки:Как обновить UIImage в UITableViewCell?

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     let cell = tableView.dequeueReusableCellWithIdentifier("FbFriendCell") as! FbFriendCell 
     cell.initialize() 
     return cell 
} 

Очень простой.

В функции инициализации(), загрузить изображение и я положил его в UIImageView:

let theImageView = UIImageView(image: userPhoto) 
theImageView.frame = CGRect(x: 0, y: 0, width: 80, height: 80) 
self.addSubview(theImageView) 
theImageView.image = userPhoto 
println("The image has been set !") 

Проблема заключается в том, что изображение появляется только через несколько секунд после этого сообщения журнала:

println("The image has been set !") 

Как заставить изображение перезагрузить?

* READ THIS * => Проблема может быть сильно связана с тем, что изображение находится внутри UITableViewCell!

+0

Опубликуйте код, используемый для загрузки изображения. Похоже, что это нужно обрабатывать в блоке завершения. –

+0

Он обрабатывается в блоке завершения. – Cherif

ответ

5

Убедитесь, что вы обновить изображение на главной очереди

dispatch_async(dispatch_get_main_queue(), {() -> Void in 
      //Update UI 
}) 

У меня этот вопрос раньше, и это решить мой problem.Just попробовать

2

Я думаю, что вы загрузить асинхронно изображения. Ваш журнал появляется, когда программа достигает println («Изображение настроено!»), Но на самом деле ваше изображение еще не загружено. Вы должны переместить свой журнал до конца обратного вызова загрузки, а затем журнал должен появиться как раз вовремя, когда появится изображение.

В противном случае это может произойти из-за того, что вы не обновили свой UIImageView в потоке пользовательского интерфейса. Вы можете сделать это вот так:

dispatch_async(dispatch_get_main_queue(), {() -> Void in 
     //Set image to UIImageView 
}) 
+0

Изображение отображается через несколько секунд. Если бы я был настройками синхронно, это не показалось бы вообще. – Cherif

0

Существует более удобный способ доступа к потоку пользовательского интерфейса в Swift3.

DispatchQueue.main.async() { 

} 

Некоторые люди говорят, что это происходит медленнее, чем dispatch_async, но я никогда не видел никакой разницы в практическом использовании.

Смежные вопросы