来自NSMutableArray的表格显示中的自定义TableViewCells问题

时间:2011-03-25 14:05:30

标签: ios uitableview nsmutablearray

我遇到了一个奇怪的问题 - 在我的代码中,我以XML格式从互联网上获取数据并填写NSMutableArray(共34项)。

此数据应显示在TableView中。我为此创建了一个自定义TableViewCell。但是它始终只显示前10个项目(0-9),然后第11个项目将在您向上滚动表格时更改(从11开始并将自身更改为12,13,14 ......),然后它将显示前10个项目。

- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section {

    return [myCurrencies count];
}

    - (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

        static NSString *myIdentifier = @"CurrencyDisplayCell";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:myIdentifier];

        if (cell == nil) {
            [[NSBundle mainBundle] loadNibNamed:@"CurrencyTableViewCell" owner:self options:nil];
            cell = tableViewCell;
            cell.accessoryType = UITableViewCellAccessoryNone;
            self.tableViewCell = nil;
        }

        NSLog(@"%i",indexPath.row);

        actualRate.text = [NSString stringWithFormat:@"%@",[myRates objectAtIndex:indexPath.row]];
        currencyCode.text = [NSString stringWithFormat:@"(%i) %@",indexPath.row,[myCurrencies objectAtIndex:indexPath.row]];
        countryFlag.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@.gif",[myCurrencies objectAtIndex:indexPath.row]]];

        return cell;
    }

然而,当我只设置标准单元格的文本标签时,一切都很好,我显示了34个表格行,数字为0 - 33:

cell.textLabel.text = [NSString stringWithFormat:@"%i",indexPath.row]; 

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

你的手机初始化错误

首先在Interface Builder中使用标记命名所有标签和图像视图 例如actualRate - 标签101 currencyCode标签102 countryFlag tag 103

然后

- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

        static NSString *myIdentifier = @"CurrencyDisplayCell";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:myIdentifier];

        if (cell == nil) {
            cell = [[[NSBundle mainBundle] loadNibNamed:@"CurrencyTableViewCell" owner:self options:nil] lastObject];
        }

        NSLog(@"%i",indexPath.row);

        [((UILabel *)[cell viewWithTag:101]) setText:[NSString stringWithFormat:@"%@",[myRates objectAtIndex:indexPath.row]]];
        [((UILabel *)[cell viewWithTag:102]) setText:[NSString stringWithFormat:@"(%i) %@",indexPath.row,[myCurrencies objectAtIndex:indexPath.row]]];
        [((UIImageView *)[cell viewWithTag:103]) setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%@.gif",[myCurrencies objectAtIndex:indexPath.row]]]];

        return cell;
}