如何在UItableview中显示解析的xml数据?
问题描述:
我已经能够使用
TBXML
解析器解析xml url。如何在UItableview中显示解析的xml数据?解析的数据将被放入名为
records
的NSMutableArray
。-
下面是代码....
if ([[TBXML elementName:element] isEqualToString:@"order"]) { NSLog(@"xml element checking"); TBXMLElement *id = [TBXML childElementNamed:@"id" parentElement:element]; TBXMLElement *status = [TBXML childElementNamed:@"status" parentElement:element]; TBXMLElement *date = [TBXML childElementNamed:@"date" parentElement:element]; TBXMLElement *by = [TBXML childElementNamed:@"by" parentElement:element]; TBXMLElement *total = [TBXML childElementNamed:@"total" parentElement:element]; [records addObject:[NSArray arrayWithObjects: [TBXML textForElement:id], [TBXML textForElement:status], [TBXML textForElement:date], [TBXML textForElement:by], [TBXML textForElement:total],nil]];
现在这些
records
数据将在的tableview单元显示,所以行数将是作为records
数组大小相同。-
现在在我的
tableview
有五个UILabel
。每个标签都会显示records
数组值的属性值。6.i可以第一次显示属性的值,直到滚动tableview,但我的问题是当我开始滚动我的
UITableview
然后值开始显示在错误的单元格中。 -
这里实现代码如下代码...
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *MyIdentifier = @"MyIdentifier"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease]; cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:15.0]; cell.selectionStyle = UITableViewCellSelectionStyleNone; UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow.png"]]; cell.accessoryView = imageView; cell.accessoryType = UITableViewCellSelectionStyleNone; tableView.separatorColor = [UIColor clearColor]; tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine; cellView = [[[UIView alloc] initWithFrame:CGRectMake(5,8,290, 120)] autorelease]; cellView.backgroundColor = [UIColor clearColor]; cellView.tag =10; [cell.contentView addSubview:cellView]; imgView = [[UIImageView alloc] initWithFrame:CGRectMake(2, 40, 48, 48)]; imgView.image = [UIImage imageNamed:@"productbox.png"]; imgView.layer.borderColor = [UIColor blackColor].CGColor; imgView.layer.borderWidth = 2.0; imgView.tag = 5; [cellView addSubview:imgView]; CGRect idLabelRect = CGRectMake(65, 0, 190, 18); idLabel = [[[UILabel alloc] initWithFrame:idLabelRect] autorelease]; idLabel.textAlignment = UITextAlignmentLeft; idLabel.textColor = [UIColor blackColor]; idLabel.font = [UIFont systemFontOfSize:12]; idLabel.backgroundColor = [UIColor redColor]; idLabel.layer.borderColor = [UIColor grayColor].CGColor; idLabel.tag = 0; CGRect statusRect = CGRectMake(65, 22, 190, 22); statusLabel = [[[UILabel alloc] initWithFrame:statusRect] autorelease]; statusLabel.textAlignment = UITextAlignmentLeft; statusLabel.textColor = [UIColor blackColor]; statusLabel.font = [UIFont systemFontOfSize:12]; statusLabel.backgroundColor = [UIColor greenColor]; statusLabel.layer.borderColor = [UIColor grayColor].CGColor; statusLabel.tag = 1; CGRect orderDateRect = CGRectMake(65, 48, 190, 22); orderDate = [[[UILabel alloc] initWithFrame:orderDateRect] autorelease]; orderDate.textAlignment = UITextAlignmentLeft; orderDate.textColor = [UIColor blackColor]; orderDate.font = [UIFont systemFontOfSize:12]; orderDate.backgroundColor = [UIColor grayColor]; orderDate.layer.borderColor = [UIColor grayColor].CGColor; orderDate.tag = 2; CGRect byRect = CGRectMake(65, 75, 190, 22); byLabel = [[[UILabel alloc] initWithFrame:byRect] autorelease]; byLabel.textAlignment = UITextAlignmentLeft; byLabel.textColor = [UIColor blackColor]; byLabel.font = [UIFont systemFontOfSize:12]; byLabel.backgroundColor = [UIColor yellowColor]; byLabel.layer.borderColor = [UIColor grayColor].CGColor; byLabel.tag = 3; CGRect totalRect = CGRectMake(65, 98, 190, 22); totalLabel = [[[UILabel alloc] initWithFrame:totalRect] autorelease]; totalLabel.textAlignment = UITextAlignmentLeft; totalLabel.textColor = [UIColor blackColor]; totalLabel.font = [UIFont systemFontOfSize:12]; totalLabel.backgroundColor = [UIColor cyanColor]; totalLabel.layer.borderColor = [UIColor grayColor].CGColor; totalLabel.tag = 4; [cellView addSubview:idLabel]; [cellView addSubview:statusLabel]; [cellView addSubview:orderDate]; [cellView addSubview:byLabel]; [cellView addSubview:totalLabel]; } x = [records count]; //NSLog(@" total number of row: %d",x); if(y<x){ if(y == indexPath.section){ cellView = (UIView *)[cell.contentView viewWithTag:10]; idLabel = (UILabel *)[cellView viewWithTag:0]; statusLabel = (UILabel *)[cellView viewWithTag:1]; orderDate = (UILabel *)[cellView viewWithTag:2]; byLabel = (UILabel *)[cellView viewWithTag:3]; totalLabel = (UILabel *)[cellView viewWithTag:4]; imgView = (UIImageView *)[cellView viewWithTag:5]; NSLog(@"the value of y: %d",y); NSLog(@"the value of indexpath.section: %d",indexPath.section); idLabel.text = [NSString stringWithFormat:@"Order Id: %@",[[records objectAtIndex:y] objectAtIndex:0]]; statusLabel.text = [NSString stringWithFormat:@"Status: %@",[[records objectAtIndex:y] objectAtIndex:1]]; orderDate.text = [NSString stringWithFormat:@"Date: %@",[[records objectAtIndex:y] objectAtIndex:2]]; byLabel.text = [NSString stringWithFormat:@"By: %@",[[records objectAtIndex:y] objectAtIndex:3]]; totalLabel.text = [NSString stringWithFormat:@"Total: %@",[[records objectAtIndex:y] objectAtIndex:4]]; y++; } } return cell; }
那意思是,当表的负载则值显示在右边的单元格,但是当我开始滚动值不正确显示电池第一次。
过去几天我正在被淡化了这个问题,所以请任何人知道什么是解决方案,然后尽快通知我的...
在此先感谢。
答
我有我的回答是很无聊的问题......可能是它会有人乐于助人......
这里是代码...我只是改变的tableview委托..
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyIdentifier = @"MyIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:15.0];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow.png"]];
cell.accessoryView = imageView;
cell.accessoryType = UITableViewCellSelectionStyleNone;
tableView.separatorColor = [UIColor clearColor];
tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
cellView = [[[UIView alloc] initWithFrame:CGRectMake(5,8,290, 120)] autorelease];
cellView.backgroundColor = [UIColor clearColor];
cellView.tag =10;
[cell.contentView addSubview:cellView];
imgView = [[UIImageView alloc] initWithFrame:CGRectMake(2, 40, 48, 48)];
imgView.image = [UIImage imageNamed:@"productbox.png"];
imgView.layer.borderColor = [UIColor blackColor].CGColor;
imgView.layer.borderWidth = 2.0;
imgView.tag = 5;
[cellView addSubview:imgView];
CGRect idLabelRect = CGRectMake(65, 0, 190, 18);
idLabel = [[[UILabel alloc] initWithFrame:idLabelRect] autorelease];
idLabel.textAlignment = UITextAlignmentLeft;
idLabel.textColor = [UIColor blackColor];
idLabel.font = [UIFont systemFontOfSize:12];
idLabel.backgroundColor = [UIColor clearColor];
idLabel.layer.borderColor = [UIColor grayColor].CGColor;
idLabel.tag = 0;
CGRect statusRect = CGRectMake(65, 22, 190, 22);
statusLabel = [[[UILabel alloc] initWithFrame:statusRect] autorelease];
statusLabel.textAlignment = UITextAlignmentLeft;
statusLabel.textColor = [UIColor blackColor];
statusLabel.font = [UIFont systemFontOfSize:12];
statusLabel.backgroundColor = [UIColor clearColor];
statusLabel.layer.borderColor = [UIColor grayColor].CGColor;
statusLabel.tag = 1;
CGRect orderDateRect = CGRectMake(65, 48, 190, 22);
orderDate = [[[UILabel alloc] initWithFrame:orderDateRect] autorelease];
orderDate.textAlignment = UITextAlignmentLeft;
orderDate.textColor = [UIColor blackColor];
orderDate.font = [UIFont systemFontOfSize:12];
orderDate.backgroundColor = [UIColor clearColor];
orderDate.layer.borderColor = [UIColor grayColor].CGColor;
orderDate.tag = 2;
CGRect byRect = CGRectMake(65, 75, 190, 22);
byLabel = [[[UILabel alloc] initWithFrame:byRect] autorelease];
byLabel.textAlignment = UITextAlignmentLeft;
byLabel.textColor = [UIColor blackColor];
byLabel.font = [UIFont systemFontOfSize:12];
byLabel.backgroundColor = [UIColor clearColor];
byLabel.layer.borderColor = [UIColor grayColor].CGColor;
byLabel.tag = 3;
CGRect totalRect = CGRectMake(65, 98, 190, 22);
totalLabel = [[[UILabel alloc] initWithFrame:totalRect] autorelease];
totalLabel.textAlignment = UITextAlignmentLeft;
totalLabel.textColor = [UIColor blackColor];
totalLabel.font = [UIFont systemFontOfSize:12];
totalLabel.backgroundColor = [UIColor clearColor];
totalLabel.layer.borderColor = [UIColor grayColor].CGColor;
totalLabel.tag = 4;
[cellView addSubview:idLabel];
[cellView addSubview:statusLabel];
[cellView addSubview:orderDate];
[cellView addSubview:byLabel];
[cellView addSubview:totalLabel];
}
cellView = (UIView *)[cell.contentView viewWithTag:10];
idLabel = (UILabel *)[cellView viewWithTag:0];
statusLabel = (UILabel *)[cellView viewWithTag:1];
orderDate = (UILabel *)[cellView viewWithTag:2];
byLabel = (UILabel *)[cellView viewWithTag:3];
totalLabel = (UILabel *)[cellView viewWithTag:4];
imgView = (UIImageView *)[cellView viewWithTag:5];
//here is my changed of code
idLabel.text = [NSString stringWithFormat:@"Order Id: %@",[[records objectAtIndex:indexPath.section] objectAtIndex:0]];
statusLabel.text = [NSString stringWithFormat:@"Status: %@",[[records objectAtIndex:indexPath.section] objectAtIndex:1]];
orderDate.text = [NSString stringWithFormat:@"Date: %@",[[records objectAtIndex:indexPath.section] objectAtIndex:2]];
byLabel.text =[NSString stringWithFormat:@"By: %@",[[records objectAtIndex:indexPath.section] objectAtIndex:3]];
totalLabel.text =[NSString stringWithFormat:@"Total: %@",[[records objectAtIndex:indexPath.section] objectAtIndex:4]];
有人帮我请 – Emon
如何将解析的数据添加到MutableArray中? –