문제

셀의 액세서리 버튼을 누르면 셀이로드 된 데이터가로드되도록 셀이 보이므로 응용 프로그램에 데이터를로드하려고합니다.

내 문제는 내가 afnetworking을 사용하고 있고이 블록 코드를 사용하고 있다는 것입니다.

[Request fullRequestWithBlock:^(NSArray *detailedReqFromWeb, NSError *error) {
        if (error) {

            [[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error", nil) message:[error localizedDescription] delegate:nil cancelButtonTitle:nil otherButtonTitles:NSLocalizedString(@"OK", nil), nil] show];
        } else {

            NSArray *objs = [NSArray arrayWithObjects: [detailedReqFromWeb objectAtIndex: 0], [detailedReqFromWeb objectAtIndex: 1], [detailedReqFromWeb objectAtIndex: 2], [detailedReqFromWeb objectAtIndex: 3], [detailedReqFromWeb objectAtIndex: 4], [detailedReqFromWeb objectAtIndex: 5], nil];
            NSArray *keys = [NSArray arrayWithObjects:@"Risk", @"Destination", @"Source", @"Customer", @"Subcategory", @"Deployment", nil];

            NSMutableDictionary *detailsforRequestDictionary = [[NSMutableDictionary alloc] initWithObjects:objs forKeys:keys];

            [request addEntriesFromDictionary: detailsforRequestDictionary];

            NSLog(@"%@ Finished Loading", [idNumbers objectAtIndex:row]);
            cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;

        }

    } forID: [[idNumbers objectAtIndex:row] substringFromIndex:1]];
.

그래서 기본적으로 데이터가로드되면 표시기에서 공개 버튼으로 인디케이터 유형을 변경하려고 시도하고 있으므로로드 한 데이터가 표시되는 다른보기로 세그리를 수행 할 수 있습니다.

내 문제는로드가 끝나기 전에 셀의 셀을 버튼으로 변경하는 것입니다.디버그 NSLOG는 실제로 로딩이 완료되면 실제로 출력합니다.

로드 중에 버튼을 활성화하는 가장 좋은 방법은 무엇입니까?나는 요청이 주 스레드에 의해 처리되지 않는다고 추측하고있다.요청이 처리가 완료되어 액세서리 타입을 전환 할 수있는 방법을 알려주는 방법은 무엇입니까?

감사합니다!

도움이 되었습니까?

해결책

셀을 재활용하지 않는 한, 사용자가 스크롤 할 때 대표하는 데이터가 변경 될 때 셀 참조를 결코 유지하지 않아야합니다.올바른 방법은 섹션 / 행 좌표에서 테이블 항목을 업데이트하는 메인 대기열에 블록을 파견하는 것입니다.그런 다음 코드가 해당 셀이 표시되는지 확인한 다음 업데이트합니다.또한 테이블이 적절한 상태가 적용될 때 상태가 적용되도록 다른 방식으로 상태를 기록합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top