문제

나는 테이블 보기 컨트롤러와 함께 사용자 지정 세포입니다.그 세포에서 추가 버튼을 각각 하나의 세포이다.나는 누를 때는 버튼을 표시하는 새로운 전망에 대한 자세한 정보는 셀,다른 뷰에서 얻을 didSelectRowAtIndexPath.

나는 그것을 알고 이제 어려운 질문입니다.본 버튼은 어떤 행동에 interfacebuilder(터치하려면)그러나 내가 어떻게 연결하는 코드.어디어야 나는 선한 코드를 처리하는 것 이벤트?

나시에 다른 포럼,아무 대답이 없이 작동합니다.

감사합니다.Gian

도움이 되었습니까?

해결책

아래 UIButton 하의 인스턴스 NSIndexPath.는 방법,각각의 개별 UIButton 에 UITableViewCell 할 수 있는"몰"어디 그것은 테이블에서 볼 때,그래서 당신은 버튼을 누르면,당신을 부를 수 있는 몇 가지 방법을 사용하는 NSIndexPath 밀어 새로운 보고,비슷한에서 무엇을 -didSelectRowAtIndexPath: 그러나 다른 뷰를 대신(어쩌면 그것을 설명하는 방법과 같은 이름을 -didPressButtonAtIndexPath:).

대신 인터페이스를 사용하여 작성기 이를 위해,당신은 방법을 추가 UIButton 서브 클래스는 그 자체에는 메소드를 호출에서 보기 컨트롤러입니다.그런 다음,각 UIButton 사용할 수 있습니다 UIControl 방법 -addTarget:action:forControlEvents:.가 UIButton 의 방법을 통 컨트롤러의 방법입니다.귀하의 솔루션 같은 것을 볼 수 있습니다.:

// MyButton.h
@interface MyButton : UIButton {
    NSIndexPath *myIndexPath;
    MyViewController *viewController;
}

- (void)didPressButton;
@end

// MyViewController.h
@interface MyViewController { }
- (void)didPressButtonAtIndexPath:(NSIndexPath *)indexPath;
@end

다음을 빌드 할 때,당신의 셀,각 버튼을 추가 전화:

[button addTarget:button 
           action:@selector(didPressButton)
 forControlEvents:UIControlEventTouchDown];

그리고 마지막으로,구현 -didPressButton 을 다음과 같다:

- (void)didPressButton {
   [controller didPressButtonAtIndexPath:myIndexPath];
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top