임 NSCollectionView 및 NSCollectionViewItems로 작업 중입니다.NSCollectionViewItem이 reloadData 뒤 엉켜 있습니다.
다음과 같은 문제가 발생했습니다 : 항목 중 하나의 NSImageView를 회전 한 다음 reloadData를 호출하면 업데이트 된보기가 엉망이됩니다. 회전은 다음 항목으로 넘어 가고 각도는 달라집니다.
이미지 아래 코드 :
회전 코드 :
,모델 :
class LibraryViewItem: NSCollectionViewItem {
// 1
var model: ImageModel? {
didSet {
guard isViewLoaded else {
print("asd")
return }
if let imageFile = model {
imageView?.image = imageFile.thumbnail
textField?.stringValue = imageFile.fileName
} else {
imageView?.image = nil
textField?.stringValue = ""
}
}
}
// 2
override func viewDidLoad() {
super.viewDidLoad()
view.wantsLayer = true
view.layer?.backgroundColor = NSColor.white.cgColor
// 1
view.layer?.borderWidth = 0.0
// 2
view.layer?.borderColor = NSColor.lightGray.cgColor
}
func setHighlight(_ selected: Bool) {
view.layer?.borderWidth = selected ? 5.0 : 0.0
}
}
위임 metod 다음 NSCollectioViewItem
의이 항목 인스턴스를 피함으로써 성능을 향상시키기 위해 재사용
func collectionView(_ collectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem {
let item = collectionView.makeItem(withIdentifier: "LibraryViewItem", for: indexPath)
guard let collectionViewItem = item as? LibraryViewItem else {return item}
let libraryModel = itemsToShow[indexPath.item]
collectionViewItem.model = libraryModel
if let selectedIndexPath = collectionView.selectionIndexPaths.first, selectedIndexPath == indexPath {
collectionViewItem.setHighlight(true)
} else {
collectionViewItem.setHighlight(false)
}
return item
}
감사합니다. 이것이 정확하게 문제를 해결 한 것입니다! – PolosatiyVjih