第0节中的行数无效

时间:2014-03-22 13:44:16

标签: ios uitableview

当我尝试在我的应用中添加一个单元格时,我遇到了线程问题SIGABRT;这是Xcode给我的例外:

  

无效更新:第0节中的行数无效。更新后的现有部分中包含的行数(0)必须等于更新前的该部分中包含的行数(0),或者减去从该部分插入或删除的行数(插入1个,删除0个),加上或减去移入或移出该部分的行数(0移入,0移出)。

这是我认为是问题的代码

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    PlayerCell *cell = (PlayerCell *)[tableView
                                      dequeueReusableCellWithIdentifier:@"PlayerCell"];
    Player *player = [self.players objectAtIndex:indexPath.row];
    cell.nameLabel.text = player.name;
    cell.gameLabel.text = player.game;
    cell.ratingImageView.image = [self
                                  imageForRating:player.rating];
    return cell;
}

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete)
    {
        [self.players removeObjectAtIndex:indexPath.row];

        [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];   }
}

- (NSInteger)tableView:(UITableView *)tableView
 numberOfRowsInSection:(NSInteger)section
{
    return [self.players count];
}

UPD。

我在AppDelegate中有一个数组来预先配置几个单元格(显示用户,它是怎么样的)并使用以下代码填充它:

_players = [NSMutableArray arrayWithCapacity:20]; // make an array in appdelegate
Player *player = [[Player alloc] init]; //
player.name = @"Bill Evans";            //
player.game = @"Tic-Tac-Toe";           //Make new player
player.rating = 4;                      //
[_players addObject:player];            //Add in array in AppDelegate
PlayersViewController *playersViewController = [PlayersViewController new]; //Make instance for main array
playersViewController.players = _players; //add new item from appDelegate array to main

可能出现错误的另一段代码(当用户点击保存按钮添加新单元格时会加载)

    - (void)playerDetailsViewController:
(PlayerDetailsViewController *)controller
                       didAddPlayer:(Player *)player
{
    [self.players addObject:player];
    NSIndexPath *indexPath =
    [NSIndexPath indexPathForRow:[self.players count] - 1 inSection:0];
    [self.tableView insertRowsAtIndexPaths:
     [NSArray arrayWithObject:indexPath]
                          withRowAnimation:UITableViewRowAnimationAutomatic];
    [self dismissViewControllerAnimated:YES completion:nil];
}

所以有人能告诉我,我的错误在哪里?如果需要,我可以发送更多代码。

感谢。

0 个答案:

没有答案