在表格视图单元格中显示 NSMutableArray
Posted
技术标签:
【中文标题】在表格视图单元格中显示 NSMutableArray【英文标题】:Display NSMutableArray in Table View Cell 【发布时间】:2010-01-13 08:53:13 【问题描述】:如何在表格视图单元格中显示 arrayData? 我想将表格视图单元格的标签文本设置为解析数据中的“ename”。 请帮帮我。
提前致谢。
- (void)viewDidLoad
NSString *url = [NSString stringWithFormat:@"http://mmabigshow.com/app/get_result_from_query.php?q=select * from event"];
NSString *escapedUrl = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[self performSelector:@selector(startParsing:) withObject:escapedUrl afterDelay:1.0];
NSLog(@"View Did Load End");*/
[super viewDidLoad];
- (void) startParsing: (NSString *) query
NSLog(@"Start Of Parsing");
NSURL *xmlURL = [[NSURL alloc] initWithString:query];
NSData *myData = [NSData dataWithContentsOfURL:xmlURL];
NSString *myStr = [[NSString alloc] initWithData:myData encoding:NSWindowsCP1252StringEncoding];
myStr = [myStr stringByReplacingOccurrencesOfString:@"encoding=\"windows-1252\"" withString:@""];
NSData* aData = [myStr dataUsingEncoding:NSUTF8StringEncoding];
rssParser = [[NSXMLParser alloc] initWithData:aData];
[rssParser setDelegate:self];
[rssParser setShouldProcessNamespaces:NO];
[rssParser setShouldReportNamespacePrefixes:NO];
[rssParser setShouldResolveExternalEntities:NO];
[rssParser parse];
NSLog(@"End of Parsing");
#pragma mark xml parser
#pragma mark -
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
currentElement = [elementName copy];
if ([elementName isEqualToString:@"table"])
item = [[NSMutableDictionary alloc] init];
currentEid = [[NSMutableString alloc] init];
currentEname = [[NSMutableString alloc] init];
currentEurl = [[NSMutableString alloc] init];
dataArray = [[NSMutableArray alloc] init];
//NSLog(@"didStartElement");
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
if ([elementName isEqualToString:@"table"])
// save values to an item, then store that item into the array...
[item setObject:currentEname forKey:@"ename"];
//NSLog(@"%@",item);
[dataArray addObject:[[item copy] autorelease]];
//NSLog(@"%@",dataArray);
[currentEid release];
[currentEname release];
[currentEurl release];
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
if ([currentElement isEqualToString:@"eid"])
[currentEid appendString:string];
else if ([currentElement isEqualToString:@"ename"])
[currentEname appendString:string];
//NSLog(@"%@",currentEname);
else if ([currentElement isEqualToString:@"eurl"])
[currentEurl appendString:string];
// NSLog(@"foundCharacters");
#pragma mark -
#pragma mark Table Data Source Methods
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section
NSLog(@"numberOfRowsInSection");
return [self.dataArray count];
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
NSLog(@"cellForRowAtIndexPath");
static NSString *CustomCellIdentifier = @"CustomCellIdentifier ";
TableDetailsCell *cell = (TableDetailsCell *)[tableView dequeueReusableCellWithIdentifier: CustomCellIdentifier];
if (cell == nil)
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TableDetailsCell" owner:self options:nil];
for (id oneObject in nib)
if ([oneObject isKindOfClass:[TableDetailsCell class]])
cell = (TableDetailsCell *)oneObject;
NSUInteger row = [indexPath row];
NSDictionary *rowData = [self.dataArray objectAtIndex:row];
//NSLog(@"%@",rowData);
cell.text = [rowData objectForKey:@"ename"];
cell.labelName.text= [rowData objectForKey:@"ename"];
return cell;
【问题讨论】:
@Rohit:请重新格式化问题。 @skaffman:你编辑了什么??? 我已将 arrayData 声明为 NSMutableArray。我想在表格视图单元格中显示它。并将其分配给它的文本。 您需要提供更多信息。究竟发生了什么是你不想发生的?表格根本不显示吗?它是否显示但单元格错误?文字不显示? dataArray 是否实际填充? 我认为先调用表格视图单元格的数据源方法,然后调用 viewDidLoad 方法。所以我得到 dataArray.count = 0;我只想在表格视图单元格中将“ename”显示为文本,单击时将显示详细信息。目前我在表格视图单元格中没有得到任何内容。 【参考方案1】:我相信您的问题是您没有始终将 dataArray 称为 self.dataArray,这可能会导致您的程序无法正常工作。
然后通过分配
cell.textLabel.text = [self.dataArray objectAtIndex:indexRow.row];
希望对你有所帮助
塞布·卡德 “我是来帮忙的”
【讨论】:
【参考方案2】:Apple 的SeismicXML app 正是这样做的。查看 rootViewController 的 cellForRowAtIndexPath。
另外,请确保您的 tableview 在 Interface Builder 中正确设置了它的委托和数据源(如果您选择使用它)。
【讨论】:
以上是关于在表格视图单元格中显示 NSMutableArray的主要内容,如果未能解决你的问题,请参考以下文章