2016-03-04 46 views
1

我有以下代碼:夫特/在UIImage的圖像的陣列僅最後一個圖像被顯示多次

var posts = [EventPosts]() { 
    didSet { 
     eventsCollectionView.reloadData() 
    } 
} 

    //MARK:PLACEHOLDER IMAGES 
    var eventImagesPlaceholder: [UIImage] = [ 
    UIImage(named: "wildstyle.jpg")!, 
    UIImage(named: "geilesleben.jpg")!] 

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 

    let event = posts[indexPath.row] 
    let cell = eventsCollectionView.dequeueReusableCellWithReuseIdentifier("eventsCell", forIndexPath: indexPath) as! EventsCollectionViewCell 

    for element in eventImagesPlaceholder { 
     cell.eventsImageView.image = element 
    } 

    if Reachability.isConnectedToNetwork() == true { 
     offlineModusLabel.hidden = true 
     let imgURL = NSURL(string: event.imageUrl)! 
     cell.eventsImageView.sd_setImageWithURL(imgURL)    
     activityIndicator.stopAnimating() 
    } else {   
     offlineModusLabel.hidden = false 
    } 


    return cell 
} 

如果我打開,從所希望的源4倍的圖像將被解析並正確顯示互聯網。如果關閉互聯網,最後一個佔位符圖像將顯示4次。如果我最後設置了wildstyle.jpg,它會顯示四次。如果我把geilesleben.jpg放在最後,那只有那個。

如何顯示兩個佔位符圖像。最好每次只有一次。

幫助非常感謝。

+0

現在我已經4個空幀 –

回答

2

您可以使用此,這兩個佔位符圖像顯示在所有細胞交替。

如果向陣列添加更多佔位符圖像,則會自動考慮項目數。

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 

    let event = posts[indexPath.row] 
    let cell = eventsCollectionView.dequeueReusableCellWithReuseIdentifier("eventsCell", forIndexPath: indexPath) as! EventsCollectionViewCell 

    if Reachability.isConnectedToNetwork() == true { 
    offlineModusLabel.hidden = true 
    let imgURL = NSURL(string: event.imageUrl)! 
    cell.eventsImageView.sd_setImageWithURL(imgURL) 
    activityIndicator.stopAnimating() 
    } else { 
    offlineModusLabel.hidden = false 
    cell.eventsImageView.image = eventImagesPlaceholder[indexPath.row % eventImagesPlaceholder.count] 
    } 

    return cell 
} 

在你的代碼總是最後的影像,因爲重複循環,其分配所有圖像相同的圖像查看和保存最後圖像的顯示。

2

添加

override func prepareForReuse() { 
    self.eventsImageView.image = nil 
} 

在你的細胞的類

+0

仍然四次相同的圖片 –

+0

這是爲什麼 '爲元素在eventImagesPlaceholder { cell.eventsImageView.image =元素 }' – techloverr

+0

此代碼將始終設置最後一個圖像 – techloverr

1
for element in eventImagesPlaceholder { 
     cell.eventsImageView.image = element 
    } 

改變這個循環statment喜歡這個

let element = eventImagesPlaceholder.objectAtIndex(indexPath.row) as! UIImage 
    cell.eventsImageView.image = element 
1
for element in eventImagesPlaceholder { 
    cell.eventsImageView.image = element 
} 

這對您所有的細胞進行迭代。基本上每個細胞都可以獲得每個圖像並保持最後。非常直截了當

你想要做的是某事像這樣:

cell.eventsImageView.image = eventImagesPlaceholder[someKindOfIndex] 

取而代之的是for循環。 就像當你知道你有4個單元,並在您的佔位符變量4個圖像時,只取indexPath.row爲「someKindOfIndex」

相關問題