View

300x250

[iOS 앱 개발 - Swift] 앱 내에서 앨범 사진 삭제하기

이전 포스팅에서 올렸던, 사진을 앨범에서 읽어와 테이블뷰의 셀에 올린 프로젝트에서 이어서 작성하고자 합니다! 

> https://etst.tistory.com/111 < 바로 요것!

PHPhotoLibraryChangeObserver 프로토콜 추가하기

사진 라이브러리가 변경된 경우 이를 읽고 변경사항을 알려주거나, 라이브러리를 변경하고자 할 때 사용해줄 수 있는 프로토콜입니다. 이를 채택하고 준수하여 사진첩 편집에 이용하면 됩니다.

밀어서 삭제하기

 

먼저, 셀을 삭제하는 기능을 만들어봅시다. 이런 기능은 애플에서 잘 만들어서 제공을 하기때문에, 우리가 할 일은 감사합니다! 하고 받아서 쓰면 돼요. ㅋㅋㅋㅋ 그러려면 공식문서를 잘 읽고 필요한 기능을 써먹을 줄 알아야겠죠? (귀-찮 근데 매우 중요 ㅜㅜ)

 

tableView의 Delegate 중에서 canEditRowAt 이라는 텍스트가 들어간 메서드를 가져와줍니다. 어느 셀을 편집가능하게 만들지를 선택하는 메서드로, 우리는 모든 셀이 현재 사진을 가지고있으니, 모두 true를 반환해 삭제가 가능하게 만들어줍시다!

 

그 다음, commit editingStyle 이라는 텍스트가 들어간 델리게이트를 작성해줍니다. editing.styledelete인 경우에 대해서만 작성하려 하므로 if문으로 분기해줍시다. 삭제를 원하는 데이터를 fetchResult(앨범에서 가져온 사진의 콜렉션임)에서 가져와서 asset 상수에 저장해줍니다. 이 데이터를 앨범에서 삭제하면 되는데, PHPhotoLibrary.shared().performChanges() 라는 메서드로 사진의 변경에 대한 메타데이터 수정 작업을 수행할 수 있습니다. 위와 같은 방식으로 작성해줍시다.

 

아까전에 프로토콜로 채택했던 변화를 감지하는 기능이 여기에 들어갑니다. 만약 사진 라이브러리가 변경된 경우에, fetchResult의 changeInstance의 changeDetail 값을 받아와서 변경된 값이 있다면 ( 변경사항이 nil이 아니라면 - 여기서는 삭제를 의미하겠네요 ) 바뀐 fetchResult로 tableView를 Update 해줍니다.

 

그리고, ViewDidLoad에 이 변화를 감시하는 observer로 정보를 알릴 대상(register)으로 이 클래스를 선택해줍니다. 사진첩의 변경이 있으면, 여기에 알려지게 되고, 그에 따라 앨범 변경에 대한 메서드가 실행되겠네요.

 

빌드 결과

이렇게 해주면 다음과 같은 결과물을 얻을 수 있습니다! 

 

이렇게 이미지를 삭제해주면 앨범에서도 해당 이미지가 자동으로 없어지게 됩니다! 짱 신기해! 


현재 사진첩과 연동한 테이블뷰와 뷰를 만들어서 Like기능, 공유기능, 삭제기능, 다중 선택 등의 작업을 할 수 있는 사진앨범 앱을 만드는 프로젝트에 대한 공부를 하고있습니다. 이 글은 edwith의 부스트코스 iOS 프로그래밍 강의를 들으며 공부한 내용과 예제를 정리하여 올리는 포스팅입니다. 전체 무료강의에 강의자료도 모두 무료로 공개되어있고, 원하시는 분은 결제를 통해 iOS 현업 개발자에게 코드에 대한 리뷰도 받을 수 있습니다. 저도 몇 번 받아봤는데 깔끔한 코드를 위한 문법을 확실히 신경쓰면서 만들게되었고, 이런 부분은 애플 앱 심사에서 떨어뜨리는 사유가 된다는 것도 알려주셔서 괜찮은 것 같아요! 여기에 띄어쓰기를 하는게 바람직하지는 않다는 부분까지 말해주는 것을 보면 꽤나 꼼꼼하게 보시는 것 같아요. 

 

이 강좌에 관심이 있으신 분은 아래 링크를 확인해주세용!

https://www.edwith.org/boostcourse-ios/

 

[부스트코스] iOS 프로그래밍 강좌소개 : edwith

- 부스트코스

www.edwith.org

 

320x100
Share Link
reply
반응형
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30