2011-03-09 9 views
0

UIButton을 테이블 뷰에 추가했습니다. 이제 특정 버튼을 클릭하면 해당 행에 해당하는 객체의 세부 정보를 가져와야합니다.@selector 메서드에 인수 전달

버튼에이 방법을 사용했습니다. 어떻게이 선택기 메서드에 인수를 전달할 수 있습니까? 또는이 버튼을 클릭 할 때이 메서드에 인수를 전달하는 다른 방법이 있습니까?

+0

행에 대한 식별자를 게시하기 위해'UIButton'의'tag' 값을 사용하고, 액션 핸들러 메소드 내에서'tag' 값을 더 읽을 수 있습니다. 다른 태그를 게시 할 필요가 없습니다. 이미 _controller-layer_에 있으며 _model-layer_ 및 모든 데이터에 액세스 할 수 있습니다. – holex

답변

3

방법 당신은 당신이 당신의 자신의 개체를 전달할 수 없습니다 추가 할 수 있습니다. 보낸 사람 (단추) 개체의 도움을 받아 전달하려는 개체를 가져 오는 것이 종종 가능합니다.

tableviewcell에 버튼이있는 경우이 방법을 사용하여 셀의 인덱스 경로를 가져올 수 있습니다.

- (IBAction)buttonAction:(id)sender { 
    UIButton *button = (UIButton *)sender; 
    CGPoint buttonOriginInTableView = [button convertPoint:CGPointZero toView:tableView]; 
    NSIndexPath *indexPath = [tableView indexPathForRowAtPoint:buttonOriginInTableView]; 

    // do something 
} 

그리고 indexPath를 사용하면 필요한 개체를 얻을 수 있습니다.

+0

위대한 작품! – sujith1406

0

아니요. 당신은 당신이 그 형태의 함수에서 그렇게해야합니다 다른 방법을 호출 할 경우 클릭 이벤트는

-(IBAction) fnc:(id)sender; 

입니다. UIControl에 행동이 3 명 가지 서명

- (void)action 
- (void)action:(id)sender 
- (void)action:(id)sender event:(UIEvent *)event 

을 가질 수

-(IBAction) fnc:(id) sender 
{ 
    UIButton *b = (UIButton*) sender; 
    [self otherFnc:b arg:arg1 arg2:arg2]; 
}