2012-11-26 3 views
3

커스텀 UITableViewCell에서 버튼 클릭을 올바르게 처리 할 수 ​​없습니다. 라벨과 버튼이 포함 된 셀입니다. 다음 코드가 있습니다.핸들 단추 내부를 클릭하십시오. UITableViewCell

var cell = tableView.DequeueReusableCell (cellKey) as ApptHistoryCell; 
if (cell == null) 
{ 
    cell = _container.Cell; 
    cell.SelectionStyle = UITableViewCellSelectionStyle.None; 
} 

if (InfoClicked != null) 
{ 
    cell.ActionButton.TouchUpInside += InfoClicked; 
} 

InfoClicked는 셀 작성시 루프에서 전달되는 이벤트 핸들러입니다. 셀이 다시 사용될 때 TouchUpInside가 2 개의 핸들러를 호출하려고하기 때문에 null 참조 예외가 발생합니다. 낡은 것과 새로운 것, 충돌을 일으킨다. 만약 내가 이벤트 처리기를 셀 안에 넣으면 == null, 블록이면 잘못된 동작이 나타난다.

어떻게하면 클릭을 제대로 처리 할 수 ​​있습니까?

감사합니다.

답변

5

I 맞춤 균체 내에 버튼을 처리하는 방법 :

  • I는 IBAction를 정의 I는
  • 내가 대리인 셀 처리하기위한 위임 방법을 정의하는 정의 셀 안에있는 UIButton 이벤트에 연결 버튼 동작
  • IBAction은 위임 메서드를 호출합니다.
  • cellAtRow에서 셀을 정의 할 때 ... tableViewController를 위임자로 설정합니다. cell.delegate = 자기;
  • 내가 어떤 행동 나는

이 this가 tableViewController에 그 대리자 메서드 내에서 수행하고자합니까?

+0

Brilliant, 감사합니다. 매력처럼 작동 –

+1

이 대리자 메서드를 통해 해당 셀의 indexPath를 가져 오는 방법이 있습니까? – Isuru

+0

그건 좋은 질문 Isuru, 별도의 게시물의 가치가있어. 그게 지금 당황 스럽네. – rtcarlson

0

이미 소유자의 대상 (보기 컨트롤러)에 단추를 연결하는 xib 파일에서 셀을 만들어야합니다.

+0

그게 내가하는 일입니다. 이제 셀에서 클릭 동작을 처리하고 싶습니다. –

-3

사용자 정의 셀에서 버튼을 IB에서 찾아 속성과 연결하십시오.

이제 cellForRowAtIndexPath에서 컨트롤러에, 당신이 필요, 그냥 버튼 태그, 말 :

(MyCustomCell*)cell.myButton = indexPath.row; 

지금처럼 그건 그냥 설정 한 후 클릭 이벤트 : -

[(MyCustomCell*)cell.myButton addTarget:self action:@selector(NeedFunctionToCall:) forControlEvents:UIControlEventTouchUpInside]; 

이제 동일한 뷰 컨트롤러에서 다음과 같이 필요한 메서드를 구현하십시오.

-(void)NeedFunctionToCall:(id)sender 
{ 
NSLog("Got the event :-> %d, from the cell/button",[sender tag]); 
} 
관련 문제