【问题标题】:Display NSMutableArray in Table View Cell在表格视图单元格中显示 NSMutableArray
【发布时间】: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”显示为文本,单击时将显示详细信息。目前我在表格视图单元格中没有得到任何内容。

标签: iphone cocoa-touch uitableview nsmutablearray


【解决方案1】:

我相信您的问题是您没有始终将 dataArray 称为 self.dataArray,这可能会导致您的程序无法正常工作。

然后通过分配

cell.textLabel.text = [self.dataArray objectAtIndex:indexRow.row];

希望对你有所帮助

塞布·卡德 “我是来帮忙的”

【讨论】:

    【解决方案2】:

    Apple 的SeismicXML app 正是这样做的。查看 rootViewController 的 cellForRowAtIndexPath。

    另外,请确保您的 tableview 在 Interface Builder 中正确设置了它的委托和数据源(如果您选择使用它)。

    【讨论】:

      猜你喜欢
      • 2013-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-21
      • 1970-01-01
      • 2015-05-29
      相关资源
      最近更新 更多