[swift]TIL_미니프로젝트(3)

Jeff·2024년 10월 24일
1

미니_팀프로젝트

목록 보기
3/4

개발

어제에 이어서 오늘도 개발을 마저 해보았다. 오늘은 내가 맡은 대화창 화면을 모두 완성을 했다.

화면 구현

  • < 와이어 프레임>

  • < 스토리보드 >

# 트래블 슈팅

# 문제 1 : 오토레이아웃 문제로 로직 오류 유발

  • 개발을 진행 중 오토레이아웃을 잡는 과정에서 사진과 채팅은 오토레이아웃으로 잡고 대부분 작업을 마친 상태에서 이름 Label을 추가하는 과정에서 stackView를 사용했는데 원하는 모양의 오토레이아웃이 잡히지 않는 문제가 발생했었다.

  • 그렇기에 저는 이름Label과 채팅부분의 stackView를 따로 화면에 나타나게 하기로 결정을 하였다.
    이렇게 스토리보드를 만들어 놓고 코드 구현을 해놓았다. 버튼이 눌렸을 때 Hidden되어있던 view를 나타나게 하려고 했는데 여기서 stackView와 이름Label이 원하는대로 동작하지 않았다.

    사진과 같이 버튼이 눌렸을 때 채팅stacView 위에 이름Label이 stackView위에 올라오도록 해야하는데 다른 위치에서 나오는걸 볼 수 있다.

  • 이 문제점을 찾아보니 내가 짠 로직에서 증감 코드가 함수 호출보다 먼저 있었던 오류를 발견했다.

    함수(Hidden = false) 호출이 먼저 이루어지고 나중에 index를 증가시키는 코드로 수정했다.

# 문제 2 : 사진을 선택했을 때 화면이 넘어갈 수 있게 구현

  • 사진은 UIImage 즉 UIView를 상속하기에 IBAction을 사용할 수 없다는걸 알게 되었다. 그래서 Tap Guesture Recognizer를 이용하면 된다는 걸 알게되었다.


추가한 tap geusture은 사진과 같이 아래에 추가되어 이걸 이용해 IBAction과 같이 사용할 수 있다.

아래에 생성된 tap guesture은 IBAction으로 사용이 가능하게된다. 인스펙터를 보면 잘 연결 되어있다는걸 확인할 수 있다.

# 문제 3 : 사진(tap guesture)을 눌러도 반응이 없음

  • 하지만 여기서 문제는 Tap guesture을 넣었지만 사진을 눌러도 반응이 없었다. 그리고 알게된 점은 문제 2번과 연관된 문제로 UIView는 User Interaction Enabled가 활성화가 되어있지 않기에 우리는 이부분을 확인 후 활성화 해야한다.

    하지만 그래도 뭐가 문제인지 Print로 로그를 찍어보려고 했지만 반응이 없어 확인 해보기 위해서 debug view Hierarchy로 계층을 확인해보기로 했다.


    하지만 역시나 Hierarchy를 이용해서 다른 뷰로 막혀있는지 또는 User Interaction Enabled가 활성화가 되어있는지 확인을 해봤지만 작동하는지 알 수가 없었다.

  • 이번에는 Break Point를 이용해 확인하는 방법으로 했다.

문제점 발견놓친 부분

좀 허무하지만 console창이 닫혀있었다. 이번 계기로 print로 로그를 찍어서 확인하는 방법은 확실하게 확인할 수 있는게 아닌걸 알게되었고 디버깅을 통해 차분히 버그를 찾아보는 습관을 들여야겠다.

profile
기본에 충실한 개발자가 목표!

4개의 댓글

comment-user-thumbnail
2024년 10월 24일

엥 작성시간 방금 전은 못 참지 댓글 쓰고 읽어야지

1개의 답글
comment-user-thumbnail
2024년 10월 25일

좀 허무하지만 console 창이 닫혀있었다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 에구

1개의 답글