CollectionCell highlighted When Tapped

이건준·2022년 3월 6일
0

문제제기

Poke프로젝트를 하고있던 와중에 collection cell에 대한 코드까지 마쳤는데 cell을 클릭하였을때 사용자로 하여금 이 cell이 눌렀습니다라는 안내를 할 수 있게끔 highlight를 주고싶었다, 기존에 tableView cell에서는 setHighlighted메소드를 오버라이드하여 alpha값을 변경해주는 방식으로 해왔었는데 collection cell에는 이 메소드가 없길래 찾아보게되었고 정리해두면 도움이 되겠다싶어 글을 작성해본다

-> 보면은 UITableViewCell에는 setHighlighted메소드가 존재한다

문제해결

1. isHighlighted를 이용해보기


-> 찾아보니 isHighlighted라는 프로퍼티가 있었고 이를 이용하여 프로퍼티감시자를 사용한다던지 연산프로퍼티를 사용하여 효과를 줄 수 있는 방법이 있다

2. UICollectionView의 delegate메소드인 didSelectedItemAt을 이용하기


-> 이 delegate메소드는 다들 알다시피 cell을 클릭하였을때 실행되는 메소드이다, 해당 cell을 cellForRowAt메소드를 통해 가져오고 이 가져온 cell을 통해서 클릭되었을때의 코드를 해주면 원하는 결과를 얻을 수 있다

추가...

위에서 내가 2가지의 방법을 소개했는데 2번째 방법인 delegate메소드를 이용할때 present로 다음 vc를 뿌려주려하는데 이 뿌려준 vc가 내려가도 지정해준 highlight가 유지되게되었고 delegate로는 클릭되지않았을때의 구현이 까다롭다는것을 깨달았다, isHighlighted프로퍼티를 오버라이드하여 코딩하는게 좀 더 편한 면이 있는거같다

##추가1...

해당 프로젝트를 계속 코드해오다가 noTapped라는 로그가 계속 찍혔었는데 처음엔 넘어가다가 뭔가하고 다시 봤더니 스크롤할때마다 CollectionCell에 isHighlighted프로퍼티가 동작하고있었다, 나는 여태 cell을 눌렀을때 혹은 눌르지않았을때 동작하는것인줄 알았는데 아니였나보다... 헉

0개의 댓글

관련 채용 정보