2014-03-14 5 views
0

this link의 질문에 대한 대답에 설명 된 블록 메서드를 구현하려고하는데 블록을 설정하는 방법을 모르겠다. 실제로이 나는 UITableViewCell (안 정의 셀)가 가정하고 세포 내에서 UIButton 구현하는 것이 방법, UITableViewCell의 UIButton에 대한 NSIndexPath

cell.onButtonTapped = ^{ 
     [self buttonSelectedAtIndexPath:indexPath]; 
    } 

는 의사 코드입니다 ... 가정하면. 내 자신의 UITableViewCell 하위 클래스를 만들지 않고이 작업을 수행 할 수 있습니까?

답변

1

이렇게하면, 버튼의 타겟이고 블록에 대한 속성을 가지며 버튼이 두드려 질 때 블록을 호출하는 UITableViewCell 서브 클래스를 만들어야합니다.

실제로 indexPath에서 셀의 하위보기 (예 : 여기의 단추)를 알 수있는 간단한 방법이 있습니다. 먼저 subview에 포함 된 tableView의 좌표에 점이 필요합니다. 하위보기의 중심을 선택한다고 가정 해 보겠습니다. 있는 tableView의 좌표로 변환하려면 :

NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:subViewCenter]; 
+0

이 iOS7에 작동합니다

CGPoint subViewCenter = [self.tableView convertPoint:subview.center fromView:subView.superView]; // because a view's center is on its superview's coordinates 

는 indexPath를 얻을 수 – Apollo

-2

아니요, 대답에 따르면 사용자 지정 UITableViewCell이 필요합니다. 본질적으로 셀의 메서드를 호출하고 해당 셀의 현재 indexPath를 전달하고 있습니다.

블록 메서드를 사용하든 위임 메서드를 사용하든 관계없이 indexPath를 저장하고 설정하는 방법이 필요하므로 사용자 지정 UITableViewCell이 필요합니다.

관련 문제