1

我正在尝试将行/单元格添加到 tableview,但在 [Table 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

在向表格添加行时,您需要让 TableView 知道它有更多的单元格要管理。在使用之前insertRowsAtIndexPaths:,您需要运行该[TaskHandler createTask]方法,该方法将为您的数据源数组创建一个对象。该数组应该是由您的 TableView 委托方法计算的实例变量numberOfRowsInSection:

于 2013-01-25T16:23:03.797 回答
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 回答
-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 回答