TIL 26

오늘 한 일 / 배운점

  • 14:00 팀 회의 & 코드 리뷰
  • 팀 과제 코드 작성
  • 20:00 팀 회의 & 코드 리뷰

과제

  • 팀 과제 코드 작성

느낀점

1

오늘의 작업 :
UI를 조금 다듬고, 로그아웃 버튼 터치 시 KA님이 만드신 로그인 화면으로 넘어가게 연결했다.
그리고 프로필 편집은 아직 제대로 구현하지 못했고
어제 컬렉션 뷰에 더미 데이터 표시하던 거를 커스텀 셀에 좋아요 누른 동영상을 받아와서 뿌리도록 했다.

오늘도 역시나 여러 삽질을 했는데
그중에서 하나를 뽑자면 “내가 좋아요 한 동영상” 컬렉션 뷰에서
특정 동영상을 터치하면 CH님이 만든 상세페이지로 넘어가도록 구현하는 것..

2먼저 스토리보드에서 커스텀 셸을 storyboard reference 통해 디테일 페이지로 넘어가게 해놓고

처음에는 ViewController에 performSegue랑 prepare를 이용해서 구현하려고 했었다
근데 넘기는 데이터 중에 id 값만 자꾸 누락되어 넘어가서(..귀신이 곡할 노릇)
CH님 뷰 컨트롤러에서 에러를 뿜는 거다

3

어디서 틀어지는 건지 궁금해서 로그도 찍어보고

4

비교도 해보고 하다가

JB님 좋아요 페이지에서도 영상을 누르면 CH님 쪽으로 넘어가는 기능이 있어서
같은 기능인데 JB님 화면에서는 멀쩡히 잘 넘어가서 구현하신 코드를 내 쪽에 갖다가 해보기로 했다

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  if segue.identifier == "likedVideoCell", let detailVC = segue.destination as? DetailViewController, let selectedVideo = likedVideosCollectionView.indexPathsForSelectedItems {
  detailVC.video = likedVideos[selectedVideo.item] // Value of type '[IndexPath]' has no member 'item' 에러 발생
}

근데 내 코드에서 적용하려니 IndexPath에 item이 없다고 빨간 줄 쫙..
찾아보니 JB님은 테이블 뷰 나는 컬렉션 뷰를 사용했는데

item 속성은 개별 IndexPath에서나 사용 가능한 거고
컬렉션 뷰의 indexPathsForSelectedItems의 경우 선택된 모든 셀의 IndexPath 배열을 반환하는거라
해당 배열에서 하나의 IndexPath를 가져와야 한다고 한다

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "likedVideoCell", let detailVC = segue.destination as? DetailViewController, let selectedIndexPath = likedVideosCollectionView.indexPathsForSelectedItems?.first {
        detailVC.video = likedVideos[selectedIndexPath.item]
    }
}

위처럼 첫 번째 셀을 가져오게 해서 에러가 해결되었고
왜인지 모를 넘기는 값 중에 id 값이 누락돼서 날아가는 것도 이제는 잘 표시되게 되었다.

5

근데 오토 레이아웃이 여전히 문제다
조금만 스토리보드 만지면
자꾸 An internal error occurred. Editing functionality may be limited. 가 떠서
할 때 신경 쓰이니까 닫으려고 Report a Bug 누르면 한 10초 무지개 빙글빙글 돌면서 멈춰버린다

어제도 이래서 새벽 4시까지 새로 엎고 다시 했는데 여전히 이럼ㅠㅠ 뭐가 문제인 건지
괜히 저거 때문에 오토 레이아웃이 이상하게 잡히는 게 아닌지🧐ㅋㅋㅋ

무튼 내일은 프로필 편집화면 구현하고, UI 적인 부분 다듬고 오토 레이아웃 확실히 잡고 싶다
내일도 파이팅!!