使用insertRowsAtIndexPaths断言失败

时间:2016-02-28 17:33:25

标签: ios objective-c uitableview

我正面临这个错误:

Assertion failure in -[UITableView _endCellAnimationsWithContext:]

当我尝试使用insertRowsAtIndexPaths:withRowAnimation:

基本上我有NSMutableArray个对象,请调用此self.objects

我正在添加对象:

MyObject *something = [MyObject new];
[self.objects addObject:something];

NSInteger count = self.objects.count;
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:count];
[self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];

需要注意的是,我使用section而不是row来实现单元格间距。

更新

错误讯息:

*** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3512.30.14/UITableView.m:1704

数据源方法:

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

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 1;
}

2 个答案:

答案 0 :(得分:2)

代码哪个有效:

  

MyObject * something = [MyObject new];

     

[self.objects addObject:something];

     

NSInteger count = self.objects.count;

     

[self.tableView insertSections:[NSIndexSet indexSetWithIndex:count-1]   withRowAnimation:UITableViewRowAnimationAutomatic];

说明

在您的表格视图实施中,您使用一行来访问到达部分。并且您正在尝试将行插入到不可用(已创建)的部分。 所以你必须首先插入只有你可以插入行的部分(在你的实现中你每个部分有一行,所以只插入部分)。

答案 1 :(得分:0)

将是

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:count-1];