segue 를 이용해, destination view controller 로 정보를 넘기며 이동된 이후, 반대 방향으로(destination에서 원래 segue를 수행했던 view로) 정보를 다시 넘겨주고 싶다면?
1.넘겨주고 싶은 데이터가 있는 view controller(ListDetail)에서의 작업
아래의 사진과 같이 protocol을 이용해 delegate를 선언해준 후, 해당 delegate 변수를 뷰 컨트롤러 내에 선언해 줍니다.
이후 아래와 같이, 데이터를 넘겨주고 싶은 시점에서, delegate 내의 함수를 호출해 원하는 정보를 넘겨줍니다.
저는 함수 호출 이후 네비게이션컨트롤러의 popViewController 나 self의 dimiss 등을 이용해 이전 화면으로 돌아가도록 해 주었습니다.
2.segue를 수행했던, 정보를 받고 싶은 view controller 에서의 작업
아래 사진과 같이, 선언해 두었던 delegate를 (sendBackDelegate) 사용하고, 그 안의 구현을 마무리하면서 데이터를 전달받아 원하는 작업을 진행해 줍니다.
또한, 아래 사진과 같이 destination에 선언해뒀던 delegate = self 를 통해, 선언한 delegate 를 사용할 수 있도록 합니다.
이렇게 하면, segue를 통해 넘어간 view controller 에서 원하는 정보를 넘겨주면서, 다시 원래 view controller 로 돌아올 수 있게 됩니다.
저는 테이블 뷰에서 특정 cell 선택 시 넘어간 detail 화면에서 삭제버튼을 눌렀을때, 서버에서 삭제를 진행하고, 또한 기존 테이블뷰에서도 cell을 삭제할 수 있도록 위와 같은 방법을 사용했습니다.
segue 를 통해 상세화면의 cell의 index 정보를 함께 넘겨주고, 삭제 버튼을 클릭하면 해당 index를 다시 delegate 를 통해 기존 테이블 뷰가 있던 view controller 로 넘겨줍니다. 이후 데이터를 관리하고 있던 memoList 에서 받아온 index 정보를 토대로 데이터를 제거하고, 테이블뷰.reloadData() 를 통해 갱신을 진행했습니다.
혹시 저와 같은 방식으로 테이블 뷰에 cell 삭제를 반영하고 싶은 분이 계신다면 도움이 됐으면 좋겠습니다