2017-02-27 55 views
0

我有一個顯示圖像網格的集合視圖。它允許用戶選擇最多三個圖像發送給自己。當用戶點擊一個單元格(圖像)時,它會高亮顯示黃色,並且文件名將被添加到數組中,如果他們再次點擊它,將取消選擇,高亮區被移除並且圖像將從數組中移除。如何清除UI集合中選定的突出顯示單元格查看

一旦用戶發送電子郵件,我使用MFMailComposeResult委託從數組中刪除項目,但我不知道如何從單元格中刪除黃色高光。希望有人能夠提供幫助。謝謝。

我在didSelectItemAt和didDeselectItemAt函數中添加了圖像的文件名。

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    let fileName = filenames[indexPath.item] 
    selectedFileNames.append(fileName) 
} 

func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) { 
    let fileName = filenames[indexPath.item] 
    if let index = selectedFileNames.index(of: fileName) { 
     selectedFileNames.remove(at: index) 
    }  
} 

,我強調的細胞在我UICollectionViewCell類

override var isSelected: Bool { 
    didSet { 
     self.layer.borderWidth = 3.0 
     self.layer.borderColor = isSelected ? UIColor.yellow.cgColor : UIColor.clear.cgColor 
    } 
} 

一旦電子郵件使用委託

func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { 
    controller.dismiss(animated: true) 
    if result == MFMailComposeResult.sent { 
     print("emailed Photos") 
     self.selectedFileNames.removeAll() 
     self.fullSizeSharableImages.removeAll()  
    } 
} 

任何想法如何清除送到這裏是代碼突出的細胞?

回答

1

對於每個選定的索引路徑,您都希望在集合視圖上調用deselectItem(at indexPath: IndexPath, animated: Bool)

Fortunatelly,UICollectionView有一個屬性,列出所選的索引路徑。所以,在mailComposeController(_: didFinishWith:),你可以寫:

if let indexPaths = collectionView.indexPathsForSelectedItems { 
    indexPaths.forEach { self.collectionView.deselectItem(at: $0, animated: false) } 
} 
+0

完美的工作!謝謝! –

相關問題