У меня есть табличный вид, который загружает пользовательские ячейки представления таблицы. В ячейке представления таблицы у меня есть вид изображения, среди других элементов управления. Проблема заключается в том, что просмотр таблицы заикается при прокрутке, хотя изображения считываются из каталога кэша или документов (с использованием либо не делают никакой разницы)Вид таблицы с изображениями заикается при прокрутке
Вот код для отображения вида ячейки таблицы:
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
})
}
}
Так что, хотя ни один из образов не загружаются здесь, представление таблицы по-прежнему не может справиться с прокруткой правильно. Я не уверен, что я делаю неправильно. Может ли размер изображений быть проблемой здесь?
Каковы размеры изображений? – skymook
Они различаются по размеру .. они варьируются от 100 КБ до 2 МБ – StudentX
2 МБ !! довольно большой размер, вы можете уменьшить размер изображений. Но, я думаю, ваша проблема в другом месте. Возможно, вам нужно настроить изображения в ячейке в cellForRowAtIndexPath. Вы также можете попытаться переместить изображение из кеша в dispatch_async (dispatch_get_main_queue(), {}) и посмотреть, работает ли он. –