2010-03-16 8 views
0

사용자 정의 셀이있는 테이블 뷰 컨트롤러가 있습니다. 그 세포들에 나는 세포들 각각을위한 버튼을 추가했다. 내가 원하는 것은 그 버튼을 누르면 그 셀에 대한 더 많은 정보를 가진 새로운 뷰를 보여주고, 다른 뷰는 didSelectRowAtIndexPath에서 가져온다.버튼을 눌렀을 때보기 컨트롤러를 변경하고 싶습니다. iphone

이제는 어려운 질문입니다. 나는 버튼이 interfacebuilder (어쩌면 터치 다운)에 어떤 액션을 가지고 있음을 보았지만, 나는 그것을 어떤 코드에 링크 시키는가? 그 이벤트를 처리하는 코드는 어디에 선언해야합니까?

답변없이 다른 포럼에 게시했습니다. 이것이 효과가 있기를 바랍니다.

감사합니다. Gian

답변

0

NSIndexPath 인스턴스를 가질 수 있도록 UIButton을 하위 클래스로 구성했을 것입니다. 이렇게하면 UITableViewCell의 각 UIButton이 테이블보기에있는 위치를 "알 수"있습니다. 따라서 단추를 누를 때 NSIndexPath를 사용하여 새보기를 푸십시오. -didSelectRowAtIndexPath:에서와 비슷합니다. 대신 다른보기를 사용하십시오 (예 : -didPressButtonAtIndexPath:과 같은 설명 메서드 이름을 지정하십시오).

인터페이스 작성기를 사용하는 대신 UIButton 하위 클래스 자체에 메서드를 추가해야합니다.이 메서드는 뷰 컨트롤러에서 메서드를 호출합니다. 그런 다음 각 UIButton에 대해 UIControl 메서드 -addTarget:action:forControlEvents:을 사용할 수 있습니다. UIButton에 컨트롤러 메서드를 호출하는 자체 메서드를 호출하게합니다.

- (void)didPressButton { 
    [controller didPressButtonAtIndexPath:myIndexPath]; 
}
:처럼 보이도록 -didPressButton을 마지막으로

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

을 그리고, 구현 : 당신은 당신이 전화를 추가하는 각 버튼에 대한, 당신의 세포를 빌드 할 때 다음

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

- (void)didPressButton; 
@end 

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

: 귀하의 솔루션과 같이 보일 수 있습니다

+0

감사합니다. 나는 내 자신의 질문에 막 대답하려고했다. 나는 또 다른 접근법을 취했다. 이 질문을하기 전에 이미지와 레이블을 추가하기 위해 UITableViewCell의 하위 클래스를 만들었으므로 셀을 사용자 정의해야했습니다. 그래서 IB에서도 버튼을 추가했습니다. 내 코드에서 하위 클래스 셀인 IBACtion을 추가하고 해당 동작을 해당 버튼의 "터치 다운"이벤트와 연결합니다. 내가 NSLog에서 이벤트를 겟트하고 있다는 것을 알기 위해 무엇인가를 인쇄했음을 알고 있습니다. 내가보기에, 지금 어떤 버튼을 눌렀는지 알 수 없습니다. 나는 당신의 해결책이 이것을 해결하는 것 같아요. 권리? 문제는 내가 많이 이해하지 못한다는 것입니다. 예를 들어 @selector – gvalero87

+0

BTW는 답장을 보내 주셔서 감사합니다. 정말 좋습니다. 그것은 단지 이것에서 정말로 새로운 것입니다. 모든 일주일에 프로그래밍에 관련된 모든 맥 : S ... 지금은 그 단추를 누르면 새로운 모달보기를 얻는 방법을 알아 내려고하고 있습니다. – gvalero87

+0

안녕하세요, 제 질문에 답해주세요. 당신이 내 세포를 만들 때해야한다고 (코드 2). 해당 뷰를 보유하고있는 xib 파일에 연결된 tableviewcell 하위 클래스가 있으므로 해당 뷰에 단추를 추가하고 tableViewcell 하위 클래스의 IBOutle에 연결했습니다. 그럼,이 셀을 만들 때 무엇을 의미합니까? – gvalero87

관련 문제