2012-03-12 3 views
0

현재 첫 번째로드 된 연결 클래스를 호출 할 때 내 파서 뷰를 설정하려고합니다. 그러면 파서 클래스를 호출하고 내 파서 클래스에서 내 ViewController의 메서드를 호출합니다. 설정중인 원래보기. 이 메서드는 후자의 배열에 전달됩니다.reload tabledata가 cellForRowAtIndexPath에 영향을줍니다.

방법은이 방법으로 그때

[self.tableView reloadData]; 

를 호출하고 (내 논리를 통해 갈 수 있도록 내가 그렇게 할 걸려 라하는 것은 재 장전 cellForRowAtIndexPath이며,이의 ViewController에서 배열 변수에 배열을 전달 if 문) 및 if ([returnedArray count] != 0){을 확인한 다음 그 스레드를 다시 실행하면 스레드가이 대리자 메서드로 돌아 가지 않으므로 if 메서드로 되돌릴 수 없습니다.

MORE INFO : 그래서 우선

때 상기의 ViewController로드

있는 tableView는 : cellForRowAtIndexPath는 : 전화를 모두 완벽하게 보이는 내 jQuery과를 설정하고, 그 다음에 연결 내있는 NSURLConnection 메소드를 호출 내 서버에 모든 데이터를 다운로드 한 다음이를 내 파서 클래스로 전달합니다. 거기에서 파서가 그 일을 처리하고 모든 것이 잘됩니다.

이 코드 내있는 tableView의 모습입니다 : cellForRowAtIndexPath :, 방법

//.. 
if (indexPath.row == 0){    
      if ([FilterArray count] == 0){ 
       [cellActivityIndicator startAnimating]; 
       //-- Start NSURLConnection 
       EngineRequests *engineRequests = [[EngineRequests alloc] init]; 
       [engineRequests initalizePacketVariables]; 
      } 
if ([FilterArray count] != 0){ 
       [cellActivityIndicator stopAnimating]; 
       cell.accessoryView = nil; //hides activity indicator 

       cell.userInteractionEnabled = YES; 
       cell.backgroundColor = [UIColor whiteColor]; 

       UILabel *label1; 
       label1 = (UILabel *)[cell viewWithTag:1]; 
       label1.textColor = [UIColor darkGrayColor]; 

       UILabel *label2; 
       label2 = (UILabel *)[cell viewWithTag:2]; 
       label2.textColor = [UIColor darkGrayColor]; 
//...etc 

을 내 파서 클래스의 parserDidEndDocument 방법 나는 MAINVIEW로 다시 NSArray를 전달하고 내부.

- (void)parserDidEndDocument:(NSXMLParser *)parser 
{ 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K like %@",@"ISCHECKED",@"T"]; 
    NSArray *filteredArray = [parsedDataArrayOfDictionaries filteredArrayUsingPredicate:predicate]; 

//call method in VieController1 to pass array over 
    SearchViewController *searchViewController = [[SearchViewController alloc] init]; 
    [SearchViewController initFilterArray:filteredArray]; 


} 

그래서 나는 내 VC1과 내가하는 .m 파일

에 분명히 다음 .H에서 선언 한 방법을 통해 머리를 뒤로이 내가에있는 그 모든 코드입니다 그것.

#pragma - Reciver methods 
-(void)initFilterArray:(NSArray*)array 
{ 
    //initalise array variable for use in latter views 
    FilterArray = array; 

    //reload to make cell white 
    [self.tableView reloadData]; 

// NSLog(@"%@", FilterArray); 
} 

내가 NSLog, 그것은 내 filitered 배열 모든 것을 표시하도록 주석을 해제하면 스레드가이 방법으로 만드는 모든 것을 실행하는 코드 .. 디버깅하는 동안. 그러나 어떤 이유로 reloadData가있는 tableView를 호출하는 것 같지 투여 량 : cellForRowAtIndexPath이 : 희망이 추가 정보가 도움이 될 것입니다 I 등 중단 점

그래서 ... 그것을 디버깅 때문에 ... 나는 이것을 알고 당신이 나를 도와 :)

+0

화면에 표시되는 셀을 다시로드해야합니다. 어떤 세포도 전혀 재 장전하지 않습니까? –

+0

아니요 그 셀을 다시로드하지 않고 메소드를 디버깅했습니다. 그리고 그 코드가 실행 된 후에는 절대 이동하지 않습니다. –

+1

viewDidLoad와 같이보기를 설정하기 만하면 reloadData를 호출하지 마십시오. 테이블 행의 셀을 요청할 때 테이블 셀을 구성하게하십시오. 테이블이 이미 표시되어 있고이를 업데이트해야하는 경우 reloadData를 호출하십시오. – jamihash

답변

0
[self.tableView reloadData]; 

위임 메서드를 호출합니다. 그렇지 않은 경우 self.tableView가 다시로드하려는 tableView에 연결되어 있는지 확인할 수 있습니다.

+0

데이터 소스 및 위임 모두 인터페이스 빌더 안에있는 tableview에 연결되어 있습니다 ... –

+0

그래서 , Xcode를 다시 시작할 수 있습니다. 언젠가는 작동합니다. – dhcdht