2012-09-25 3 views
0

데이터 소스를 가져 오는 데 문제가 있거나 실행하기 위임하는 방법에 문제가 있습니다.TableView를 페이징하지만 데이터 소스/위임이 실행되지 않습니다.

MainViewController에서 페이징 뷰를 사용하고 있습니다. 페이지가 비어 있지만 테이블 뷰가 비어있을 때와 데이터 소스 메서드가있는 중단 점을 넣을 때 절대로 호출되지 않습니다.

MainViewController는보기

if ((NSNull *)controller2 == [NSNull null]) 
{ 
    if(page == 2) 
    { 
     controller2 = [[requestDetailThreeViewController alloc] initWithRequestNumber:[request objectForKey:@"RequestID"]]; 
     [viewControllers replaceObjectAtIndex:page withObject:controller2]; 
     CGRect frame = scrollView.frame; 
     frame.origin.x = frame.size.width * 2; 
     frame.origin.y = 0; 
     controller2.view.frame = frame; 
     [scrollView addSubview:controller2.view]; 
    } 

} 

TableViewController (requestDetailThreeViewController)

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 



[History fullHistoryWithBlock:^(NSArray *netMessages, NSError *error) { 
    if (error) { 

     [[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error", nil) message: [error localizedDescription] delegate:nil cancelButtonTitle:nil otherButtonTitles:NSLocalizedString(@"OK", nil), nil] show]; 
    } else { 
     NSLog(@"Number of Historical Entries: %d", [netMessages count]); 

     self.historyFromNet = [NSMutableArray arrayWithArray:netMessages]; 
    } 

} forID:requestNum]; 

} 


    - (id) initWithRequestNumber:(NSString *)requestID 
{ 

    if (self = [super initWithNibName:@"View" bundle:nil]) 
    { 
     self.requestNum = requestID; 
    } 
    return self; 

} 

(코드 모드로를 얻는 코드의 두 번째 블록, 힘든 시간의 간격에 대한 사과를로드합니다. 에게 그것을 이 두 메서드를 실행하지만 클래스에있는 데이터 소스 메서드는 실행하지 않습니다.

XIB 파일 xB 소유자가 requestDetailThreeViewController로 설정되었습니다. tableView가 데이터 소스/위임 및보기로 설정되었습니다.

ViewDidLoad에서 tableview를 hidden으로 설정하면 사라집니다.

테이블을 채우는 메소드를 실행할 수 없습니다.

업데이트 :

좀 더 정보 및

보기 XIB는 만에있는 TableView를 가지고, 아니 컨트롤러.

감사합니다. Alan

+0

아직 해상도가 :( – Alan

답변

0

자식보기 컨트롤러를 추가하므로 UIViewController 포함 메서드를 사용해야합니다.

뭔가 같은 :

controller2 = [[requestDetailThreeViewController alloc] initWithRequestNumber:[request objectForKey:@"RequestID"]]; 
    [viewControllers replaceObjectAtIndex:page withObject:controller2]; 
    [self addChildViewController:controller2]; 
    CGRect frame = scrollView.frame; 
    frame.origin.x = frame.size.width * 2; 
    frame.origin.y = 0; 
    controller2.view.frame = frame; 
    [scrollView addSubview:controller2.view]; 
    [controller didMoveToParentViewController:self]; 
} 

또한 페이징 뷰에 대한 UIPageViewController를 사용하기보다는 스크롤 뷰를 통해 수동으로 그 일을 생각

+0

안녕하세요, 이것이 문제인 것처럼 느껴지지만 여전히 작동하지 않습니다. 나는 UIPageViewController에 대해 생각하지 않았다. 애플의 페이지 컨트롤 예제를 사용했다. – Alan

+0

다른 제안 사항이 있으십니까? – Alan

0

당신은

입니다 -(void)viewDidLoadself.tableView.delegate = self을 설정하려고 할 수 있습니다
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.tableView.delegate = self; 
} 
+0

나는 그것을 시도했으나 작동하지 않았다. (. – Alan

+0

'self.tableView.dataSource = self'를 잊어 버렸다. 시도해 본다. – sunkehappy

+0

나는 그것을 추가했지만, 여전히 데이터 소스 메소드를 실행하지 않는다. – Alan

관련 문제