2011-10-04 3 views
0

내 테이블 뷰 데이터 소스와 델리게이트가 다른 클래스 (tableModule)로 설정되어있다. 이제 모달 뷰를 표시하는 다음 코드를 작성했습니다.나는 루트 뷰 클래스에서 테이블 뷰를 가지고 있는데, 사용자가 셀을 클릭 할 때 모달 뷰를 표시하려고한다.

NewRule *newRuleModalView = [[NewRule alloc] init]; 
newRuleModalView.modalPresentationStyle = UIModalPresentationFullScreen; 
newRuleModalView.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
[self presentModalViewController:newRuleModalView animated:YES]; 
newRuleModalView.view.superview.frame = CGRectMake(0, 0, 750, 1004); 
[newRuleModalView release]; 

이 코드는 나를 위해 작동하지 않습니다. 그런 다음 tableview 데이터 소스를 설정하고 self에 위임합니다. 다음 동일한 코드가 나를 위해 일했습니다. 첫 번째 상황에서 어떻게 사용할 수 있습니까? 제발 도와주세요, 전이 분야에 더 신선합니다.

+0

위 코드는 어디에 있습니까? 어떤 메소드와 클래스가 있습니까? 그리고 당신은 보통'viewDidAppear'를 수동으로 호출하지 않습니다. – jrturton

+0

나는 위의 코드를 tableView에 썼다 : didselectRowAtIndexPath –

+0

또한 루트 뷰 클래스는 rootViewController 클래스이다. tableView를 표시하기 위해 rootViewController의 xib를 사용했습니다. tableModule이 다른 클래스인데이 클래스를 데이터 소스 및 tableView 대리자로 사용했습니다. NewRule은 세 번째 클래스로 모달보기로 표시하려는 클래스입니다. 도와주세요 ... –

답변

0

tableModule 클래스가보기 컨트롤러가 아니고 현재 표시되는보기 컨트롤러가 아닌 경우 presentModalViewController:을 호출 할 수 없습니다. 이 코드를보기 컨트롤러의 didSelectRowAtIndexPath:에 넣었고보기 컨트롤러가 테이블보기의 대리자가 아닌 경우 절대로 호출되지 않습니다.

별도의 개체를 테이블 뷰의 대리자 및 데이터 원본으로 유지하려면 테이블 뷰의 대리자 (tableModule)에보기 컨트롤러에 대한 포인터가 있어야하므로보기 컨트롤러에 모달보기를 제공 할 수 있습니다 .

데이터 소스를 tableModule으로, 대리자를보기 컨트롤러로 사용 하시겠습니까? 아니면 위임 메서드를 구현하는 데 tableModule의 정보가 필요합니까? , tableModule을 만들 때

  • tableModule에 속성을 만들고, 당신의 rootViewController 유형
  • 의 당신의 한 행 선택 방법에 tableModule.rootViewController = self
  • 을 설정 : 귀하의 의견에서

    , 다음 필요할 것 [self presentModal... 대신 do [self.rootViewController presentModal...

+0

다음 코드를 rootViewController의 viewDidLoad에 작성했습니다 –

+0

tableModule * tm = [tableModule alloc] init]; [displayTableView setDelegate : tm]; [displayTableView setDatasource : tm]; –

+0

내 tableModule 클래스는 UITableViewController의 하위 클래스입니다. –

관련 문제