1

行/セルをテーブルビューに追加しようとしていますが、[テーブルendUpdates]の前です。...アプリがエラーでクラッシュします:

*-[UITableView _endCellAnimationsWithContext:]、/ SourceCache / UIKit / UIKit-2372 / UITableView.m:909でのアサーションの失敗*キャッチされない例外'NSInternalInconsistencyException'によるアプリの終了、理由:'行33をセクション0に挿入しようとしましたが、更新後のセクション0の行はわずか33行です。

-(IBAction)createTask
{
    Data  *sharedManager = [Data sharedManager]; //singleton class
    [Table  beginUpdates];

    [Table insertRowsAtIndexPaths:[NSArray arrayWithObject:
                                          [NSIndexPath indexPathForItem: 
                                                [sharedManager._NAME count] inSection:0]] 
                                          withRowAnimation:UITableViewRowAnimationNone];

     // sharedManager._NAME is NSMutableArray wich consists names for cells
    [Task_handler createTask]; // adds objects to NSMutableArray's 
                               // (like names for cels and so on)

    [Table  endUpdates];
    [Table reloadData];

}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    Data  *sharedManager = [Data sharedManager];
    NSLog(@"numberOfRowsInSection : %d",[sharedManager._NAME count]);

    return [sharedManager._NAME count];
}

前もって感謝します。

4

3 に答える 3

1

これはどう:

-(IBAction)createTask
{
    Data  *sharedManager = [Data sharedManager]; //singleton class
    [Table  beginUpdates];
    [Table insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForItem: [sharedManager._NAME count]+1 inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
    [Task_handler createTask]; //adds objects to NSMutableArray's (like names for cels and so on)
    [Table reloadData];
    [Table  endUpdates];
}
于 2013-01-25T16:16:51.870 に答える
1

テーブルに行を追加するときは、管理するセルがさらにあることをTableViewに通知する必要があります。を使用する前に、メソッドinsertRowsAtIndexPaths:を実行する必要があります[TaskHandler createTask]。これにより、データソース配列のオブジェクトが作成されます。その配列は、TableViewデリゲートメソッドによってカウントされるインスタンス変数である必要がありますnumberOfRowsInSection:

于 2013-01-25T16:23:03.797 に答える
-2

クラッシュは、コードを次のように変更することで解決されました。

Data  *sharedManager = [Data sharedManager];
[Table  beginUpdates];
[Table insertRowsAtIndexPaths:[NSArray arrayWithObject:
                                          [NSIndexPath indexPathForItem: 
                                                [sharedManager._NAME count] inSection:0]] 
                                      withRowAnimation:UITableViewRowAnimationNone];
[Task_handler createTask];
[Table  endUpdates];
于 2013-01-31T09:50:47.650 に答える