728x90
반응형
collcetionview의 cell 내부에 있는 UIButton을 눌렀을때 불러온 이미지를 삭제하기 위한 동작에 대한 처리 방법에 대한 글이다.
This is about action for delete image when clicked UIButton in cell of UICollectionView.
collectionview 용도 : 갤러리에서 불러온 이미지 미리보기
collectionsview's purpose : previvew image selected from gallery
Collectionview의 cell
cell 내부에는 미리보기용 UIImageview와 이미지 삭제를 위한 UIButton이 존재한다.
There is a UIImageView for preview and a UIButton for delete image in cell.
//CollectionView cell
class PreviewCell: UICollectionViewCell{
@IBOutlet weak var preview: UIImageView!
@IBOutlet weak var deleteButton: UIButton!
}
//갤러리에서 가지고 온 이미지 정보를 저장하기 위한 struct
//struct for save selected image from gallery
struct PreviewItem {
var name: String?
var image: UIImage?
}
collectionview를 이용하기 위한 설정
set up to using collection view
cell 내부의 UIButton을 눌렀을때 ViewController에서 가지고 있는 image 정보 배열에서 해당 index의 item을 삭제 처리한다.
delete selected index of item of previewItem array when clicked UIButton in some index of celll.
extension PreviewViewController: UICollectionViewDelegate, UICollectionViewDataSource {
var imgItems:[PreviewItem] = []
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
imgItems.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "previewCell", for: indexPath) as?
PreviewCell else {
return UICollectionViewCell()
}
let item = imgItems[indexPath.row]
//cell의 버튼을 눌렀을때 동작 연결
//connect func when clicked UIButton in cell
cell.deleteButton.tag = indexPath.row
cell.deleteButton.addTarget(self, action: #selector(deletePreview(sender:)), for: .touchUpInside)
if item.image != nil {
cell.preview.image = item.image
}
return cell
}
//cell의 UIButton을 눌렀을때 하려는 동작
//write somthig to do when clicked UIButton in cell
@objc func deletePreview(sender: UIButton){
//cell 삭제 //delete cell at index of collectionview
self.previewCollectionView.deleteItems(at: [IndexPath.init(row: sender.tag, section: 0)])
//이미지 아이템 배열의 데이터 삭제 // delete item at index of item array
self.imgItems.remove(at: sender.tag)
}
}
728x90
반응형
'개발 > ios (swift)' 카테고리의 다른 글
scroll up textfield when keyboard show (0) | 2022.08.08 |
---|---|
UITextview Placeholder (0) | 2022.03.03 |
ios version에 따라 gallery에서 이미지 가지고 오는 방법 (0) | 2022.03.02 |
사파리로 링크 열기 (0) | 2022.02.18 |
댓글