我尝试将行/单元格添加到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];
}
提前谢谢。
答案 0 :(得分: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];
}
答案 1 :(得分:1)
向表中添加行时,需要让TableView知道它有更多要管理的单元格。在使用insertRowsAtIndexPaths:
之前,您需要运行[TaskHandler createTask]
方法,该方法将创建数据源数组的对象。该数组应该是一个由TableView委托方法numberOfRowsInSection:
计算的实例变量。
答案 2 :(得分:-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];