TableView不从数组中获取项目

时间:2014-10-16 06:23:36

标签: ios arrays uitableview

我的tableView有问题。我在一个数组中添加了一堆项目,并要求tableView使用数组中的那些项填充它,它运行正常,但是当我更改了项目时#39; dataView中的索引(订单),tableView没有正确显示项目。我知道我的阵列及其物品'订单按我的预期工作,因为NSLogs告诉我。有人可以帮我这个吗?提前谢谢!

这是我用来添加新项目的方法:

- (IBAction)AddNewItem:(id)sender{
    BNRItem *newItem = [[VKItemStore sharedStore] createItem];
    NSInteger lastRow = [[VKItemStore sharedStore].itemsArray indexOfObject:newItem];
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:lastRow inSection:0];
    [self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationTop]; 
}

这就是我改变数组中项目顺序的方式:

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UITableViewCell" forIndexPath:indexPath];
    NSMutableArray *items = [VKItemStore sharedStore].itemsArray;

    if (items.count == 2) {
        items[0] = items[1];
        items[1] = [VKItemStore sharedStore].item;
     }

    NSLog(@"AFTER ARRAY: %@", items);
    BNRItem *item = items[indexPath.row];
    cell.textLabel.text = [item description];
    return cell;
}

2 个答案:

答案 0 :(得分:0)

如果使用此代码阻止您可能会对此有所帮助

if (items.count == 2) {
        BNRItem *item  = items[0];
        items[0] = items[1];
        items[1] = item;
     }

因为您的[VKItemStore sharedStore] .item将只有您当前的项目,即数组项目的最后一个对象[1]。并将它存储在[1]项目中。所以试试上面的代码可能会对你有帮助。

答案 1 :(得分:0)

更改此行代码:

NSInteger lastRow = [[VKItemStore sharedStore].itemsArray indexOfObject:newItem];

这样就变成了:

NSInteger lastRow = [[VKItemStore sharedStore].itemsArray indexOfObject:newItem] - 1;