我想填充在我的ViewController一个UITableView(它的UITableView的委托)的UITableView不显示内容
下面的代码是什么,我在网上找到。我做了一些改变,以便我不需要一个UITableViewController来使用它。但是,由于我改变了它,我无法弄清楚如何让文本在单元格中打印。在更改代码之前,让我的ViewcController子类成为UITableView的委托。任何人都可以将我指向正确的方向吗?
我已经检查和XML被正确地分析。当代码到达在startParsing
方法if (marrXMLData.count != 0)
,marrXMLData
大于0(8是具体地,在我的XML项的正确和总数)
代码是从:http://www.theappguruz.com/blog/xmlparsing-with-nsxmlparser-tutorial
的.m低于
DisplayTableViewController
@synthesize marrXMLData;
@synthesize mstrXMLString;
@synthesize mdictXMLPart;
- (void)viewDidLoad{
[super viewDidLoad];
[self startParsing];
}
- (void)startParsing{
NSData *fileData = [NSData dataWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"file.xml"]];
NSXMLParser *xmlparser = [[NSXMLParser alloc] initWithData:fileData];
[xmlparser setDelegate:self];
[xmlparser parse];
if (marrXMLData.count != 0) {
[self.myUITableView reloadData];
}
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict;{
if([elementName isEqualToString:@"Content"])
marrXMLData = [[NSMutableArray alloc] init];
if([elementName isEqualToString:@"item"])
mdictXMLPart = [[NSMutableDictionary alloc] init];
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string;{
if(!mstrXMLString)
mstrXMLString = [[NSMutableString alloc] initWithString:string];
else
[mstrXMLString appendString:string];
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName;{
if([elementName isEqualToString:@"title"] || [elementName isEqualToString:@"url"]){
[mdictXMLPart setObject:mstrXMLString forKey:elementName];
}
if([elementName isEqualToString:@"item"])
[marrXMLData addObject:mdictXMLPart];
mstrXMLString = nil;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection: (NSInteger)section{
return [marrXMLData count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
cell.textLabel.text = [[[marrXMLData objectAtIndex:indexPath.row] valueForKey:@"title"] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
cell.detailTextLabel.text = [[[marrXMLData objectAtIndex:indexPath.row] valueForKey:@"url"] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
return cell;
}
@end
编辑:
用它打的多一些不会被调用此方法后
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
在示例代码中,它被调用,但我不知道在哪里。 (对不起,我对iOS很新)
你的问题太模糊,无法回答。 “我无法弄清楚如何让文字在标签上打印。”那是什么意思?什么文字?什么标签?你有正确数量的细胞吗?你是否在文本标签中获取内容,但不是详细文本标签,详细文本标签而不是文本标签,还是两者都不是?什么代码触发你的XML解析并填充你的XML数据数组? –
这段代码假设'[xmlparser parse]'在[self.myUITableView reloadData]之前运行并完成,首先确保在解析完成后调用self.myUITableView reloadData,或者使用nslog或breakpoints,然后确保'marrXMLData'数组中有对象。一个quicjk但不好的修复会将你的'[self.myUITableView reloadData]'移到didEndElement'(void)解析器的末尾:(NSXMLParser *)解析器didStartElement' –
你好@DuncanC我做了一些编辑来解释更好。我正在尝试在UITableView中填充单元格。标签将在单元格 – Airagale