2013-08-03 8 views
2

대상에 대한 이벤트 처리기를 추가 할 장소가 여러 개있는 것 같습니다. 현재 UITableViewCell에 여러 가지 방법으로 이벤트를 제어하는 ​​슬라이더가 있습니다 : UIControlEventValueChanged, UIControlEventTouchUpInsideUIControlEventTouchUpOutside.이벤트 처리기를 추가 할 위치

이들은 현재 layoutSubviews 방법으로 추가되었지만 정확한 장소인지는 확실하지 않습니다. 내가 UITableViewController (내가 그들을 tableView: cellForRowAtIndexPath: 메소드에 추가하는 것처럼)로 옮겨 보았습니다. 그러나 이제는 정확한 위치가이 것들을 추가하는 것이 확실하지 않습니다.

내가 layoutSubviews에 보관해야 (때문에 스크롤의 반복 시간이 지남에 따라 호출되는,이 이벤트 핸들러에하지가 여러 번 추가됩니다합니까? 확실하지), 또한합니다 (initWithStyle로하지 이동 이 중 하나에 대해,이 메서드는 NSLog 해봤지만 한 번도 호출되지 않았습니다) 또는 UITableViewController 넣어?

답변

1

layoutSubviews 방법은 확실히 하지 바로 이곳이다 : 그것은 레이아웃을 제어하기위한이, 이벤트 핸들러를 연결하지 - 아니 여러 번 같은 핸들러를 후킹 가능성을 언급!

이벤트를 표준 셀에 추가하는 올바른 위치는 tableView: cellForRowAtIndexPath:입니다. Interface Builder를 사용하여 그린 사용자 정의 셀의 경우 이벤트를 시각적으로 연결할 수 있어야합니다.

1

슬라이더를 만들 때 추가해야합니다. 슬라이더가 XIB에서 생성 된 경우 실제 연결을 추가해야합니다. 그렇지 않으면 또는 건설에 따라 awakeFromNib에 추가해야합니다. 슬라이더가 코드로 작성된 경우 작성 직후에 슬라이더를 추가하십시오.

관련 문제