2009-09-21 3 views
1

나는 간단한 RSS 리더를 만들었습니다. 앱이 xml 파일을 배열에로드합니다. 드릴 다운 RSS 리더기 iphone

지금 내가 먼저 프로그래밍 기능을 드릴 다운 추가하는 가장 좋은 방법은 무엇 배열

에로드 된 내 Atom 피드에 카테고리를 추가했습니다. 이제 범주 만 배열에로드되어 표시됩니다.

SimpleDrillDown

답변

2

애플은 드릴 다운의 tableview을 보여주는위한 좋은 샘플 응용 프로그램을 제공하는 구현 코드입니다 . 그런 다음 사용자가 행을 탭하면 선택한 카테고리와 연결된 게시물의 배열을 가져 와서 새보기 컨트롤러에 전달합니다. 그런 다음 [[self navigationController] pushViewController:nextViewController animated:YES];을 사용하여 뷰 컨트롤러를 스택으로 푸시합니다.

+0

ver. 감사합니다. 그것이 제가 찾고있는 것입니다. – bing

1

값의 배열을 일반 UITableViewController 서브 클래스를 작성 :

..... 
loading xml file <snip> 
..... 

    - (void)parserDidStartDocument:(NSXMLParser *)parser { 
     NSLog(@"found file and started parsing"); 
    } 

    - (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError { 
     NSString * errorString = [NSString stringWithFormat:@"Unable to download story feed from web site (Error code %i)", [parseError code]]; 
     NSLog(@"error parsing XML: %@", errorString); 

     UIAlertView * errorAlert = [[UIAlertView alloc] initWithTitle:@"Error loading content" message:errorString delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [errorAlert show]; 
    } 

    - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{ 
     //NSLog(@"found this element: %@", elementName); 
     currentElement = [elementName copy]; 

     if ([elementName isEqualToString:@"entry"]) { 
      // clear out our story item caches... 
      Categoryentry = [[NSMutableDictionary alloc] init]; 
      currentID = [[NSMutableString alloc] init]; 
      currentTitle = [[NSMutableString alloc] init]; 
      currentSummary = [[NSMutableString alloc] init]; 
      currentContent = [[NSMutableString alloc] init]; 
     } 
    } 

    - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ 

     //NSLog(@"ended element: %@", elementName); 
     if ([elementName isEqualToString:@"entry"]) { 
      // save values to an entry, then store that item into the array... 
      [Categoryentry setObject:currentTitle forKey:@"title"]; 
      [Categoryentry setObject:currentID forKey:@"id"]; 
      [Categoryentry setObject:currentSummary forKey:@"summary"]; 
      [Categoryentry setObject:currentContent forKey:@"content"]; 

      [categories addObject:[Categoryentry copy]]; 
      NSLog(@"adding category: %@", currentTitle); 
     } 
    } 

    - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ 
     //NSLog(@"found characters: %@", string); 
     // save the characters for the current item... 
     if ([currentElement isEqualToString:@"title"]) { 
      [currentTitle appendString:string]; 
     } else if ([currentElement isEqualToString:@"id"]) { 
      [currentID appendString:string]; 
     } else if ([currentElement isEqualToString:@"summary"]) { 
      [currentSummary appendString:string]; 
     } else if ([currentElement isEqualToString:@"content"]) { 
      [currentContent appendString:string]; 
     } 
    } 

    - (void)parserDidEndDocument:(NSXMLParser *)parser { 

     [activityIndicator stopAnimating]; 
     [activityIndicator removeFromSuperview]; 

     NSLog(@"all done!"); 
     NSLog(@"categories array has %d entries", [categories count]); 
     [newsTable reloadData]; 
    } 
1

오픈 소스 RSS/Atom Parser for iPhone을 방금 출시 했으므로 유용 할 것입니다.

나는 그것에 대해서도 당신의 생각을 듣고 싶습니다!

관련 문제