2015-05-08 2 views
3

У меня есть CollectionView с изображениями, которые должны загружаться из сети.IOS - SWIFT - CollectionView -> ImageView load image image

URL-адреса находятся в массиве строк, а в ячейке collectionView - изображение.

и я нашел этот код:

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    var cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! ViewCell 

    var url = NSURL(string: "\(array[indexPath.row])") 

    var err: NSError? 
    var imageData: NSData = NSData(contentsOfURL: url!, options: NSDataReadingOptions.DataReadingMappedIfSafe, error: &err)! 
    var bgImage = UIImage(data:imageData) 

    cell.imgView.image = bgImage 

    // cell.imgView.image = UIImage(named: array[indexPath.row]) 
    cell.load.hidden = false 
    cell.load.startAnimating() 
    cell.load.hidesWhenStopped = true 
    if cell.imgView.image == nil { 
     cell.load.startAnimating() 
    }else{ 
     cell.load.stopAnimating() 
    } 
    return cell 
} 

Проблема appearse только в самом начале. приложение загружено, и я вижу некоторые комманды из println в моем MainVC (который есть с collectionView), но на ipad это просто frezen экран запуска.

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

что может быть не так с этим?

Спасибо за помощь!

ответ

2

Это потому, что вы загружаете изображение в основной поток ниже строки кода.

var imageData: NSData = NSData(contentsOfURL: url!, options: NSDataReadingOptions.DataReadingMappedIfSafe, error: &err)! 

Загрузите изображение асинхронно и обновите соответствующую ячейку после загрузки изображения.

Пример: https://developer.apple.com/library/prerelease/ios/samplecode/LazyTableImages/Introduction/Intro.html

http://jamesonquave.com/blog/developing-ios-apps-using-swift-part-5-async-image-loading-and-caching/

+0

Здравствуйте, я просто скопировал пример из developer.apple и я получил проблему witth ней, есть [кодовое изображение] (https://drive.google .com/file/d/0B-5zXuxEf8WnQndqYUo5TEtCaVk/view? usp = sharing), и похоже, что я сделал что-то неправильно, я получаю нулевые значения. кстати, приложение запускается и работает нормально, но есть одиночные индикаторы нагрузки) –