UITableView reloadData与空数组

时间:2015-04-06 17:40:49

标签: ios uitableview

我正在删除UITableView中的所有项目。因此,我加载UITableView的数组的count = 0.删除数组中的最后一项后,在重新加载表时,我在numberofRowInSection收到错误。

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

    return [arrProjects count];
}  


- (void)tableView:(UITableView *)aTableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"");
    if (editingStyle == UITableViewCellEditingStyleDelete)
    {
        [tableProject beginUpdates];
    Project *project = [arrProjects objectAtIndex:indexPath.row];
    [[CommonModel shared]DeleteProjectDetails:project.ProjectId];
    [arrProjects removeObject:project];
    [self reloadTableProject:YES];
    [tableProject endUpdates];
    }

}  


-(void) reloadTableProject:(BOOL)isReloadRequired
{
    //[arrProjects removeAllObjects];
    arrProjects = [[CommonModel shared]GetAllProjects];

    if(isReloadRequired)
        [tableProject reloadData];
}

这是错误:

  

'无效更新:第0部分中的行数无效。数量   更新(1)后必须包含在现有部分中的行   等于之前该部分中包含的行数   update(2),加上或减去插入或删除的行数   该部分(0插入,0删除)和加号或减号的数量   行移入或移出该部分(0移入,0移出)。

我每次都会收到此错误,不仅在数组为空时。

3 个答案:

答案 0 :(得分:2)

设置:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return [_datasourceArray count];
}

要清空TableView,请执行以下操作:

[_datasourceArray removeAllObjects];
[_tableView reloadData];

答案 1 :(得分:0)

你需要从arrProjects中删除对象,在UITableViewCellEditingStyleDelete中,

[arrProjects removeObjectAtIndex:indexPath.row]; 

包括

也很好
[self.tableView beginUpdates] and [self.tableView endUpdates] 

当您开始和结束删除这些对象时

答案 2 :(得分:0)

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

    return [arrProjects count];
}  


- (void)tableView:(UITableView *)aTableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"");
    if (editingStyle == UITableViewCellEditingStyleDelete)
    {
        Project *project = [arrProjects objectAtIndex:indexPath.row];
        [[CommonModel shared]DeleteProjectDetails:project.ProjectId];
        [arrProjects removeObject:project.ProjectId];
        [self reloadTableProject: YES];
    }

}