Computer Science
탄탄한 기반 실력을 위한
전공과 이론 지식 모음
Today I Learned!
배웠으면 기록을 해야지
TIL 사진
Flutter 사진
Flutter로 모바일까지
거꾸로캠퍼스 코딩랩 Flutter 앱개발 강사
스파르타코딩클럽 즉문즉답 튜터
카카오테크캠퍼스 3기 학습코치
프로필 사진
박성민
임베디드 세계에
발을 들인 박치기 공룡
임베디드 사진
EMBEDDED SYSTEM
임베디드 SW와 HW, 이론부터 실전까지
ALGORITHM
알고리즘 해결 전략 기록
🎓
중앙대학교 소프트웨어학부
텔레칩스 차량용 임베디드 스쿨 3기
애플 개발자 아카데미 1기
깃허브 사진
GitHub
프로젝트 모아보기
Instagram
인스타그램 사진

Develop/iOS 개발

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

sm_amoled 2019. 8. 26. 14:14

[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