본문 바로가기
IT 도서/꼼꼼한 재은 씨의 스위프트 실전편

꼼꼼한 재은씨의 스위프트 실전편 Chapter1 에필로그

by Anthropologist 2019. 12. 30.

꼼꼼한 재은씨의 스프위트 실전 편 챕터별 에필로그 정답을 블로그에 올리신다 하셨지만...

아무리 찾아봐도 없어 제가 해결한 것들은 올리고자 합니다.

 

고로 제 방식이 정답이 아니며, 해결하지 못한 문제들은 문제만 정리해 두겠습니다.

 

혹 제가 잘못된 방식으로 해결했거나, 해결하지 못한 에필로그 문제의 답을 알고 계신다면 댓글로 알려주시면 정말 감사하겠습니다.

 

제 개발 환경은 Xcode(ver. 11.3)입니다.


우선 Chapter1에 대해 간략히 설명을 하자면 간단한 메모를 저장하고 불러오는 앱을 만드는 챕터입니다.

메모에는 간단한 글과 사진 그리고 작성 날짜가 저장됩니다.

 

에필로그 1

카메라 사용할 수 있도록 만들기

 

pick 버튼을 클릭했을 때 저장앨범에서 사진을 불러오는 거나 카메라를 사용할 수 있도록 만들어야 합니다.

 

내 풀이:

우선 UIAlertController를 사용하여 카메라를 불러올 것인지 저장앨범을 불러올 것인지 선택하도록 만들었습니다.

저장앨범의 경우 기존의 UIImagePickerController를 present 하도록 만들고

카메라의 경우. sourceType을. camera로 변경한 후 present 하도록 만들었습니다.

 

에필로그 2

옵셔널 처리를 통해 캐스팅 미스시 앱이 다운되는 현상을 예방하기

 

tableView(_:cellForRowAt:) 메서드 내에서 cell을 불러올 때 아래와 같은 방식을 통해 불러옵니다.

 

이 때 !를 사용하게 되면 캐스팅 미스가 발생한 경우 앱이 다운되어 버립니다.

 

내 풀이: 

재사용큐를 통해 cell을 받아오지 못했을 경우 새로 만든 MemoCell을 반환하도록 만들어주었습니다.

에필로그 3

세그웨이를 통하여 화면전환하기

 

세그웨이를 통해 화면을 전환하며 이전 ViewController가 가지고 있는 데이터를 전환될 ViewController에게 전달해 주어야 합니다.

 

내 풀이:

우선 각각 Cell과 상세화면을 Segue로 연결해 주었습니다.

이때 Identifier을 함께 설정합니다.

이후 prepare을 사용하여 값을 전달해 주었습니다.

아래 순서대로 동작합니다.

  1. 해당 segu.identifier에 해당되는지 확인합니다.
  2. MemoReadVC를 불러옵니다.
  3. 선택된 Cell의 index를 저장합니다.
  4. MemoReadVC내부에 있는 변수 param의 값을 변경합니다.