我有一个UITableView可以完美地按照需要工作,直到我试图将每一行转换成各个部分,并为每个部分提供自己的标题,有点像Instagram应用程序在其主要提要中。
所以我的工作代码如下:
@property (nonatomic) NSMutableArray *postsList;
- (void)addPostsToList:(NSArray *)posts {
NSInteger startingRow = [self.postsList count];
NSInteger postsCount = [posts count];
NSMutableArray *indexPaths = [[NSMutableArray alloc] initWithCapacity:postsCount];
for (NSInteger row = startingRow; row < (startingRow + postsCount); row++) {
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:0];
[indexPaths addObject:indexPath];
}
[self.postsList addObjectsFromArray:posts];
[self.tableView insertSections:[NSIndexSet indexSetWithIndex:[self.postsList count]] withRowAnimation:UITableViewRowAnimationAutomatic];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [self.postList count];
}
但是当我将代码更改为以下内容时,我收到了断言失败:
- (void)addPostsToList:(NSArray *)posts {
[self.postsList addObjectsFromArray:posts];
[self.tableView insertSections:[NSIndexSet indexSetWithIndex:[self.postsList count]] withRowAnimation:UITableViewRowAnimationAutomatic];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 1;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [self.postsList count];
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return 40;
}
这是错误消息:
*断言失败 - [UITableView _endCellAnimationsWithContext:],/ SourceCache / UIKit_Sim / UIKit-2935.137 / UITableView.m:1134 * 由于未捕获的异常终止应用&#39; NSInternalInconsistencyException&#39;,原因:&#39;尝试插入第100部分,但更新后只有100个部分&#39;
有人可以对此有所了解吗?
答案 0 :(得分:0)
您需要为每个帖子插入一个部分。像这样更新您的原始addPostsToList
方法:
- (void)addPostsToList:(NSArray *)posts {
NSInteger startingSection = [self.postsList count];
NSRange sectionRange = NSMakeRange(startingSection, posts.count);
[self.postsList addObjectsFromArray:posts];
[self.tableView insertSections:[NSIndexSet indexSetWithIndexesInRange:sectionRange] withRowAnimation:UITableViewRowAnimationAutomatic];
}
答案 1 :(得分:0)
您正在使用计数,但您应该使用 count - 1 index从0开始
indexSetWithIndex:[self.postsList count ...