2013-05-15 2 views
3

그래서 내 tableView 셀에 3 개의 버튼이 필요합니다. 내가 cellForRowAtIndexPathtableView 셀에 버튼 추가

에 또 다시 그 일을 한 x 사용자 정의 셀에있는 버튼을 사용자 정의 할 수 있도록 나는 사용자 정의 셀을했습니다하지만 난있는 내가

를 사용하고, 모든 세 개의 버튼에 선택기를 추가 할
[cell.btn1 addTarget:self action:@selector(firstAction:) forControlEvents:UIControlEventTouchUpInside]; 

내부 cellForRowAtIndexPath. 그것에 대해 가장 좋은 방법은 무엇입니까? addTarget을 초기화하고 셀을 스크롤 할 때마다 자체를 다시 초기화하지 않겠습니까? 그게 여분의 과부하가 아닐까요? 내가 잘 모르는이 일을하는 더 좋은 방법이 있습니까?

편집

이것은 내가 그이

CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.feedTableView]; 
NSIndexPath *indexPath = [self.feedTableView indexPathForRowAtPoint:buttonPosition]; 

답변

1

당신은 당신의 스토리 보드 또는 XIB 파일을 통해 버튼 '목표와 행동을 설정할 수 있습니다 누를 수있는 버튼이 속한 셀 알아낼 방법이다. 더 흥미로운 문제는 입니다. 버튼 셀을 눌렀습니다.

내가있는 UIButton를 서브 클래 싱과 "row"또는 "indexPath"속성 당신이 추출 할 수 있으며, ("sender")있는 테이블 공급 "cellForRowAtIndexPath"방식으로 설정하여 서브 클래스있는 UIButton에 추가 할 것을 제안하는 행 버튼을 클릭하면 액션이 호출됩니다.

+0

Michael Dautermann, 제 편집을보세요. 스토리 보드를 사용하여 액션을 할당 할 때 현재의 로직 용량이 작동합니다. – Jonathan

+0

현재 로직이 어떻게 작동하지 않습니까? indexPath가 위조입니까? –

+0

cellForRowAtIndexPath에서 셀렉터 기능을 사용하면 잘 작동하지만 스토리 보드를 사용하여 버튼에 직접 작업을 연결 한 다음 버튼을 누르면 아무 일도 발생하지 않습니다. – Jonathan

0

사용자 지정 셀에 대리자를 만들고 단추를 클릭하면이 대리자가 실행되도록해야합니다. 일부 코드 샘플 :

@protocol CustomCellDelegate 
-(void)cell:(UITableViewCell *)cell buttonTapped:(UIButton) atIndexPath:(NSIndexPath *)indexPath; 
@end 

@interface CustomCell 
property (weak) id<CustomCellDelegate> delegate; 
@end 

@implementation CustomCell 
-(void)buttonTapped { 
    // fire delegate here 
} 
@end 

무료 Sensible TableView 프레임 워크를 선택하면 단추가있는 사용자 지정 셀을 훨씬 쉽게 처리 할 수 ​​있으므로 체크 아웃하는 것이 좋습니다. 나는 지난 몇 달 동안 그와 함께 수천만 시간을 절약했습니다.

관련 문제