2012-07-14 1 views
0

웹에서 XML 피드를 가져 오는 첫 번째 앱을 개발하고 있습니다.NSXMLParser 및 UITableView를 사용하여 콘텐츠를 다시로드하면 앱이 몇 초 동안 중단됩니다.

처음으로 XML이 TableView에로드되면 모든 것이 정상이지만 버튼을 눌러 데이터를 다시로드하려는 경우 XML 및 테이블보기를 다시로드하기 전에 몇 초 동안 중단됩니다. 어떻게이 정지 시간을 피할 수 있습니까?

테이블 셀을 눌러 다음 TableViewController으로 이동하면 XML 피드를로드하는 동안 몇 초 동안 중지되어 목록을 표시합니다.

내 앱은 iPhone 용 기본 블로그 앱과 비슷하며 카테고리 및 하위 카테고리가 있습니다.

+0

는 테이블보기 이미지 포함되어 있습니까? – rakeshNS

+0

예 테이블 뷰 – umefarooq

답변

0

은 다음 프로세스를 나타냅니다.


@interface YourViewController : UITableViewController<NSURLConnectionDelegate,NSXMLParserDelegate> 
//some declartion property... 
@end 

@implementation YourViewController 

- (void)viewDidLoad 
    { 
    [super viewDidLoad]; 

    isParsingStart = NO; 
    webData = [[NSMutableData alloc] init]; 
    connection = [[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:YOUR_XML_URL] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:20] delegate:self]; 
    } 

- (void)tappingButton:(UIButton *)sender 
    { 
    if(isParsingStart) 
    { 
     //show a alert view... or other do stuff 
     return; 
    } 
    webData = [[NSMutableData alloc] init]; 
    connection = [[[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:YOUR_XML_URL] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:20] delegate:self] autorelease]; 
    } 

    - (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
    { 
    [webData appendData:data]; 
    } 

- (void) connectionDidFinishLoading:(NSURLConnection *)connection 
    { 

    parser = [[NSXMLParser alloc] initWithData:webData]; 
    parser.delegate = self; 
    if([parser parse]) 
    { 
     isParsingStart = NO; 
     NSLog(@"The XML is Parsed."); 
     [[self tableView] reloadData]; 
    } 
    else 
    { 
     isParsingStart = NO; 
     NSLog(@"Failed to parse the XML"); 
    } 

     [webData setData:nil]; 
    } 

- (void)parserDidStartDocument:(NSXMLParser *)parser 
    { 
     isParsingStart = YES; 
    } 

    - (void)parserDidEndDocument:(NSXMLParser *)parser 
    { 
     //do stuff 
    } 

    - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
    { 
    // do stuff 
    } 

    - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
    { 
    // do stuff 
    } 

      . 
      . 
      . 
+0

에 이미지를로드하는 중입니다. 덕분에 정말 훌륭한 작업이 이제는 미세 조정을 조금 더해야합니다. – umefarooq

+0

안녕하세요 비트 맵 코드가 정말 괜찮아요 지금은 한 문제가 내가 관리자가 몇 가지 일을 게시하는 경우 새로 고침과 새로 고침, 나는 응용 프로그램을 다시로드해야합니다. – umefarooq

+0

놀라운 대답! 그것이 얼마나 훌륭한 해결책인지를 믿을 수 없다. 고마워! –