Có rất nhiều câu hỏi hỏi về tràn ngăn xếp trên cùng một tiêu đề của câu hỏi. Tôi đọc tất cả những điều đó nhưng tôi chưa bao giờ thấy vấn đề của mình tương đương với chúng. Bây giờ vấn đề của tôi là nếu tôi cập nhật phần bảng 0 có 3 hàng trên nhấp chuột headerview trên phần 0 và sau đó một lần nữa tôi bấm vào cùng một tiêu đề để xóa tất cả 3 hàng từ phần 0, công việc này tốt với tôi. Nhưng nếu tôi mở (cập nhật phần 0 với 3 hàng) và sau đó tôi bấm vào một phần tiêu đề (một phần khác tôi muốn mở sau đó sau phần 0) ứng dụng của tôi bị rơi. Tôi có nghĩa là tôi muốn nếu tôi bấm vào phần khác thì phần khác của tôi nên có mở và trước phần mở nên phải đóng. xem mã của tôi cho phần chèn và xóa và các hàng,Cập nhật bảng 'NSInternalInconsistencyException', lý do: 'Cập nhật không hợp lệ: số hàng không hợp lệ?
-(void)sectionHeaderView:(TableHeaderView*)sectionHeaderView sectionOpened:(NSInteger)section{
self.sectionOpen = YES;
//Create an array containing data of rows and section which to be inserted in tableView.
NSMutableArray *dataInsertArray = [NSMutableArray arrayWithArray:[self.tableDataSourceDictionary objectForKey: [self.sortedKeys objectAtIndex:section]]];
NSInteger countOfRowsToInsert = [dataInsertArray count];
NSMutableArray *indexPathsToInsert = [[NSMutableArray alloc] init];
for (NSInteger i = 0; i < countOfRowsToInsert; i++) {
[indexPathsToInsert addObject:[NSIndexPath indexPathForRow:i inSection:section]];
}
[self.tableContents setObject:dataInsertArray forKey:[self.sortedKeys objectAtIndex:section]];
//Create an array containing data of rows and section which to be delete from tableView.
NSMutableArray *indexPathsToDelete = [[NSMutableArray alloc] init];
NSInteger previousOpenSectionIndex = self.openSectionIndex;
if (previousOpenSectionIndex != NSNotFound) {
self.sectionOpen = NO;
[previousTableHeader toggleOpenWithUserAction:NO];
NSInteger countOfRowsToDelete = [[self.tableContents objectForKey: [self.sortedKeys objectAtIndex:section]] count];
for (NSInteger i = 0; i < countOfRowsToDelete; i++) {
[indexPathsToDelete addObject:[NSIndexPath indexPathForRow:i inSection:previousOpenSectionIndex]];
}
[self.tableContents removeObjectForKey:[self.sortedKeys objectAtIndex:previousOpenSectionIndex]];
}
// Apply the updates.
[self.tableView beginUpdates];
[self.tableView deleteRowsAtIndexPaths:indexPathsToDelete withRowAnimation:UITableViewRowAnimationFade];
[self.tableView insertRowsAtIndexPaths:indexPathsToInsert withRowAnimation:UITableViewRowAnimationFade];
[self.tableView endUpdates];
self.openSectionIndex = section;
self.previousTableHeader = sectionHeaderView;
}
Và phương pháp data-nguồn của tôi,
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
NSInteger numberOfSection = [self.sortedKeys count];
return numberOfSection;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
NSArray *listData =[self.tableContents objectForKey: [self.sortedKeys objectAtIndex:section]];
NSInteger numberOfRows = [listData count];
return numberOfRows;
}
báo cáo tai nạn tôi, thất bại Assertion trong - [UITableView _endCellAnimationsWithContext:],/SourceCache /UIKit_Sim/UIKit-2372/UITableView.m:1070 2013-02-18 11: 44: 49.343 ManageId [1029: c07] Chấm dứt ứng dụng do ngoại lệ không được nhận ra 'NSInternalInconsistencyException', lý do: 'Cập nhật không hợp lệ: số hàng không hợp lệ trong phần 0. Số hàng có trong phần hiện có sau bản cập nhật (0) phải bằng số hàng chứa trong phần đó trước bản cập nhật (3), cộng hoặc trừ số hàng được chèn hoặc xóa khỏi phần đó (0 chèn, 1 đã xóa) và cộng hoặc trừ số các hàng được chuyển vào hoặc ra khỏi phần đó (0 được di chuyển vào, 0 được di chuyển ra ngoài). '
Chỉ cần giả sử 2 phần của tôi có chứa 3 - 3 hàng thì tệp này sẽ hoạt động nhưng nếu 2 phần chứa 3 - 2 hàng thì nó sẽ bị lỗi. Tôi muốn chuyển đổi hai phần nhấp vào việc cập nhật tiêu đề của phần với số hàng không nhất quán trong các phần đó.
Than
Hãy thử xóa hàng đầu tiên và cập nhật kết thúc sau đó chèn hàng với update.Or mới sử dụng phương thức reloadData và nó sẽ tự động thêm các hàng loại bỏ dựa trên các giá trị nguồn dữ liệu. – fibnochi
@fibnochi, tôi đã làm mọi cách. Nhưng không thành công. – Tirth
Thử chèn tiếp theo xóa hàng. Bằng cách này, số hàng sẽ được thêm vào trước và sau đó bị xóa. – fibnochi