使用NSMutableArray将数据添加到tableView

时间:2012-02-15 10:45:38

标签: objective-c uitableview nsmutablearray

我在向tableView添加项目时遇到问题。

我曾经在我的应用程序开始时初始化一个空的tableView,并且每次tableView重新出现并且我的变量中有一个项目时,它都会被扫描的项目填充。

tableView的初始化:

NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:nil];
self.listArray = array;

TableView数据源:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return [self.listArray count];
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{
    if(section == 0)
        return @"Eingescannte Artikel:";
    else
        return nil;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"testCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];


    // Configure the cell...
    NSUInteger row = [indexPath row];
    cell.textLabel.text = [listArray objectAtIndex:row];//[NSString stringWithFormat:@"Das ist Zeile %i", indexPath.row];
    return cell;
}

(不是整件事,而是我改变的那些)

您可能已经看到我使用NSMutableArray将项添加到我的tableView。

因此,如果扫描了一个项目,我会将它添加到我的数组中,如下所示:

[listArray insertObject:sharedGS.strEAN atIndex:0]; //using a shared Instance where I implemented my variable.

每次添加新项目时,我也尝试使用变量扩展我的索引,但它不会双向工作。

我对编程很陌生,所以一个不太难理解的答案会很好;)

如果缺少任何信息,请随时提问。

/ edit:尝试指定我的问题:来自变量的数据写在TableViewCell中,但如果我扫描另一个,则另一个正在被替换。不确定我的数组或tableView是否有问题......

/编辑No.2:发现(感谢fzwo)我的阵列无法正常工作。它只是不会通过addObject:或insertObject:atIndex:命令增长。但我只是不明白为什么...... :( 我所做的一切:[listArray addObject:sharedGS.strEAN];在一条简单的行中没有那么多的错误空间。也许我太傻了,不能认出我做错了什么:D

1 个答案:

答案 0 :(得分:1)

您声明您的问题是“向我的tableView添加项目”,因为您要将对象添加到数组中我猜测问题是您没有重新加载表或者它缺少dataSource绑定。 / p>

你实际上没有问任何问题(即使你在“指定你的问题”中添加了信息),所以在

之后猜测
[listArray insertObject:sharedGS.strEAN atIndex:0];

[yourTableView reloadData];

您是否故意在表格顶部添加新项目?否则你可以做到 [listArray addObject:sharedGS.strEAN];将新商品添加到底部

否则值得注意的是您滥用dequeueReusableCellWithIdentifier,请查看下面的示例以了解正确用法:

// Try to retrieve from the table view a now-unused cell with the given identifier
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

// If no cell is available, create a new one using the given identifier
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
}