检索XML数据时,uitableview的numberOfRowsInSection返回类型是什么? [英] What will be the numberOfRowsInSection return type for uitableview when XML data is retrieved?

查看:86
本文介绍了检索XML数据时,uitableview的numberOfRowsInSection返回类型是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  1. 我有一个名为recordsNSMutableArray和一个NSArray.

现在,我要使用TBXML parser检索XML属性及其值,并将属性值插入NSArray.

Now I am retrieving an XML attribute and its value, using TBXML parser and inserting the attribute value in the NSArray.

NSArrayrecords的对象.

当我想在表视图单元格中显示XML数据的值时,numerberOfRowsInSection是什么?

What will be the numerberOfRowsInSection when I want to display the value of XML data in tableview cell?

这是我的数据检索过程....

This is my data retrieving procedure....

[records addObject:[NSArray arrayWithObjects:
    [TBXML textForElement:id],
    [TBXML textForElement:productNumber],
    [TBXML textForElement:name],
    [TBXML textForElement:availableStock],
    [TBXML textForElement:image],
    [TBXML textForElement:quantityOrderMin],
    [TBXML textForElement:dateCreated],
    [TBXML textForElement:dateUpdated],nil]];

我的XML数据是......

And my XML data are....

<ProductData HASH="21106941">
    <id>1</id>
    <productNumber>a91cc0f4c7</productNumber>
    <name>Product 1</name>
    <seoTitle>product-1</seoTitle>
    <viewCount>0</viewCount>
    <availableStock>100.0</availableStock>
    <lowStock>0.0</lowStock>
    <image>5e928bbae358c93caedf6115fa7d178b.jpg</image>
    <quantityOrderMax>20.0</quantityOrderMax>
    <dateCreated>2011-10-06T16:08:45</dateCreated>
</ProductData>
<ProductData HASH="409555632">
    <id>2</id>
    <productNumber>d8287e2e51</productNumber>
    <name>Product 2</name>
    <seoTitle>product-2</seoTitle>
    <description>
    <p>Lorem ipsum dolor sit amet, consectetue...</p>
    </description>
    <viewCount>0</viewCount>
    <availableStock>100.0</availableStock>
    <image>8bbd8dfff3cdd28285d07810a4fe7c32.jpg</image>
    <quantityOrderMin>1.0</quantityOrderMin>
    <dateCreated>2011-10-06T16:08:45</dateCreated>
</ProductData>

我能够检索UITableviewCell中的数据,但是它显示NSArray的前两个检索到的数据,因为records数组中的行数为2.但是我要设置numberOfRowsInsection将根据NSArray检索到的属性值的总数.

I am being able to retrieve data in UITableviewCell, but it's displaying first two retrieved data of the NSArray because the number of rows are two in records array. but i want to set the numberOfRowsInsection will be according to the total number of attribute value retrieved by NSArray.

我遇到了问题,我知道问题在这里:

I have got the problem and I know the problem is here:

  - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        NSLog(@"The number of row in the object array:  %d ",[records count]);
        return [records count];
    }

我该如何解决?

推荐答案

#pragma mark tableview

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    int sectionCount = [records count];
    NSLog(@"section cout: %d",sectionCount);
    return sectionCount;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 1;
}

- (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];
    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]];

    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    //Get the selected country
    NSString *selectedSection = [ NSString stringWithFormat:@"%@",[[records objectAtIndex:indexPath.section] objectAtIndex:0] ];
    dvController = [[OrderDetailsViewController alloc] initWithNibNameAndCurrentTweetUser:@"OrderDetailsViewController" bundle:nil:selectedSection];
    [self.navigationController pushViewController:dvController animated:YES];
    [dvController release];
    dvController = nil;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return 130;
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
    UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 20)];
    [v setBackgroundColor:[UIColor blackColor]];

    UILabel* hdr = [[[UILabel alloc] initWithFrame:CGRectMake(10,0, tableView.bounds.size.width,20)] autorelease];
    hdr.textAlignment = UITextAlignmentLeft;
    hdr.font = [UIFont fontWithName:@"Arial-BoldMT" size:12];
    hdr.textColor = [UIColor whiteColor];
    hdr.backgroundColor = [UIColor blackColor];
    [v addSubview:hdr];

    hdr.text = [NSString stringWithFormat:@"Order #%@",[[records objectAtIndex:section] objectAtIndex:0]];
    return v;
}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    return 20;
}

这篇关于检索XML数据时,uitableview的numberOfRowsInSection返回类型是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆