我做了一个简单的rss阅读器。该应用程序在数组中加载xml原子文件。
现在我已经在我的原子Feed中添加了类别,这些类别首先加载到数组
中以编程方式添加向下钻取功能的最佳方法是什么。 现在只有类别被加载到数组中并显示出来。
这是实施代码
.....
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];
}
答案 0 :(得分:2)
Apple提供了一个很好的示例应用程序,用于演示下钻表格视图:
答案 1 :(得分:1)
编写一个带有值数组的通用UITableViewController
子类。然后,当用户点击一行时,获取与所选类别关联的帖子数组,并将其传递给新的视图控制器。然后,使用[[self navigationController] pushViewController:nextViewController animated:YES];
将视图控制器推入堆栈。
答案 2 :(得分:1)
我刚刚发布了一个开源RSS/Atom Parser for iPhone,希望它可能有用。
我也很乐意听到你的想法!