2016-09-17 3 views
0

У меня есть табличный вид, который загружает пользовательские ячейки представления таблицы. В ячейке представления таблицы у меня есть вид изображения, среди других элементов управления. Проблема заключается в том, что просмотр таблицы заикается при прокрутке, хотя изображения считываются из каталога кэша или документов (с использованием либо не делают никакой разницы)Вид таблицы с изображениями заикается при прокрутке

Вот код для отображения вида ячейки таблицы:

func tableView(tableView: UITableView, 
       willDisplayCell cell: UITableViewCell, 
           forRowAtIndexPath indexPath: NSIndexPath) { 

if cell.isKindOfClass(EventsTableViewCell) { 

    let eventCell = cell as! EventsTableViewCell 

    let list = self.eventsList 

    if list.count > 0 { 

     let event = list.objectAtIndex(indexPath.row) as! Event 


//other cell labels configured here 

     //imageCache is NSCache instance 
     if let imageData = self.imageCache.objectForKey(event.name) as? NSData { 

      let image = UIImage(data: imageData) 

      eventCell.eventImageView.image = image 
     } 
     else if event.imageUrl != "" { 

      eventCell.setImageToCell(event) 
     } 


    } 

} 

} 

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

let cellIdentifier = "eventCell" 

var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) 

if cell == nil { 

    let nibCollection = NSBundle.mainBundle().loadNibNamed("EventsTableViewCell", 
                  owner: nil, 
                  options: nil) 

    cell = (nibCollection as NSArray).objectAtIndex(0) as? EventsTableViewCell 
} 

cell?.selectionStyle = .None 

return cell! 
} 

В EventsTableViewCell,

func setImageToCell(event: Event) { 

     //apply placeholder image. This image will be replaced if an image is found for the particular event. 

     if event.image != nil { 

      dispatch_async(dispatch_get_main_queue(), { 

        self.eventImageView.image = event.image 
      }) 
     } 
} 

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

+0

Каковы размеры изображений? – skymook

+0

Они различаются по размеру .. они варьируются от 100 КБ до 2 МБ – StudentX

+0

2 МБ !! довольно большой размер, вы можете уменьшить размер изображений. Но, я думаю, ваша проблема в другом месте. Возможно, вам нужно настроить изображения в ячейке в cellForRowAtIndexPath. Вы также можете попытаться переместить изображение из кеша в dispatch_async (dispatch_get_main_queue(), {}) и посмотреть, работает ли он. –

ответ

-2

как @SanchitKumarSingh сказал, что ваш код для загрузки изображений в UIImageView должен идти в методе cellForRowAtIndexPath.

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