2013 이전/iOS개발

[iPhone 개발] UITableViewCell 이벤트관리 메소드

하구루 2017. 2. 25. 15:59

UITableView를 사용하다보면 각 셀에 이벤트를 cell단위로 관리하고 싶을 것이다.


이를 위함 메소드들이 UITableViewCell에 있다.


- (void)setSelected:(BOOL)selected animated:(BOOL)animated {

[super setEditing:editing animated:animated];

if(selected) {
 // 선택 되었을때
} else {
// 선택 되지 않앗을때
}
}

해당셀의 선택 여부에 따라 호출되는 메소드로 selected 를 통해서 선택 되었을때와 안 되었을때를 구분하여 cell을 관리 할수 있다.

참고로 selected는 tap이 모두 이루어 진게 되는 상태를 말한다.
따라서 Highlight  를 처리하는 메소드가 따로 있다.

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated

사용법은 위와 같다.

그리고 테이블 삭제를 할때 오른쪽에 삭제 버튼이 생기는 edit 상태일떄를 처리하는 메소드도 제공한다


- (void)setEditing:(BOOL)editing animated:(BOOL)animated

이 세개의 메소드는 보는것처럼 쉽게 이용할수 있다.


그외에 tableView에서 여러 셀을 동시에 편집하는 화면에서 왼쪽 (-) 처럼 생긴 것을 터치했을때 오른쪽에 삭제 버튼이 나타나는 상황을 캐취하는 메소드 또한 있다.

무슨말일까.. 저위에말.. ㅋㅋ


- (void)didTransitionToState:(UITableViewCellStateMask)state {

    [superdidTransitionToState:state];

    

    if(state & UITableViewCellStateShowingDeleteConfirmationMask) {

  // 삭제버튼이 나타 낫을때

    } else {

 // 삭제버튼이 없을때

    }

}


셀의 변화가 일어 낫을때 불리는 메소드로 의심이 되는데 굳이 상세히짚고 넘어갈 마음은 없다.

if(state & UITableViewCellStateShowingDeleteConfirmationMask)  이부분이 어떤 원리로 작동하는 지는 모르겠다.. 구글링과 나의 껴 마추기로 찾은 조합이니 다른데서 오작동을 할가능성은 다분하다. 


이정도만 활용해도 tableView의 셀의 이벤트에 대응할수 있을것이다.



반응형