UITableView缺less新的可见行NSInternalInconsistencyException的单元格

我一直在与我的应用程序得到这个问题,不知道出了什么问题。 致命exception:NSInternalInconsistencyException缺less新的可见行78的单元格

这是堆栈跟踪:

Fatal Exception: NSInternalInconsistencyException 0 CoreFoundation 0x191bbefd8 __exceptionPreprocess 1 libobjc.A.dylib 0x190620538 objc_exception_throw 2 CoreFoundation 0x191bbeeac +[NSException raise:format:] 3 Foundation 0x192656710 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] 4 UIKit 0x198022b3c __46-[UITableView _updateWithItems:updateSupport:]_block_invoke.1049 5 UIKit 0x197d234b8 +[UIView(UIViewAnimationWithBlocks) _setupAnimationWithDuration:delay:view:options:factory:animations:start:animationStateGenerator:completion:] 6 UIKit 0x197d39bac +[UIView(UIViewAnimationWithBlocks) animateWithDuration:delay:options:animations:completion:] 7 UIKit 0x197ee8770 -[UITableView _updateWithItems:updateSupport:] 8 UIKit 0x197eccfbc -[UITableView _endCellAnimationsWithContext:] 9 MyApp 0x1000ed518 -[UICommentsTableViewController insertNewComment:atLocation:] (UICommentsTableViewController.m:1228) 10 MyApp 0x1000e99e8 -[UICommentsTableViewController onCommentsReceivedWithMessage:] (UICommentsTableViewController.m:881) 11 MyApp 0x1000e9094 -[UICommentsTableViewController processWSMessage:] (UICommentsTableViewController.m:803) 12 MyApp 0x1000e8f84 -[UICommentsTableViewController webSocket:didReceiveMessage:] (UICommentsTableViewController.m:788) 13 MyApp 0x10009ea30 __30-[SRWebSocket _handleMessage:]_block_invoke (SRWebSocket.m:837) 14 libdispatch.dylib 0x190a769e0 _dispatch_call_block_and_release 15 libdispatch.dylib 0x190a769a0 _dispatch_client_callout 16 libdispatch.dylib 0x190a7b5e8 _dispatch_main_queue_callback_4CF 17 CoreFoundation 0x191b6d0c0 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ 18 CoreFoundation 0x191b6acdc __CFRunLoopRun 19 CoreFoundation 0x191a9ad94 CFRunLoopRunSpecific 20 GraphicsServices 0x193504074 GSEventRunModal 21 UIKit 0x197d53130 UIApplicationMain 22 MyApp 0x10011ba40 main (main.m:7) 23 libdyld.dylib 0x190aa959c start 

错误发生在这里:

 - (void)insertNewComment:(NSIndexSet *)indexSet atLocation:(NSInteger)location{ [self.tableView beginUpdates]; NSMutableArray *indexArray = [NSMutableArray new]; if (!indexSet) { [indexArray addObject:[NSIndexPath indexPathForRow:location inSection:0]]; } else { [indexSet enumerateIndexesUsingBlock:^(NSUInteger index, BOOL *stop ) { [indexArray addObject:[NSIndexPath indexPathForRow:index inSection:0]]; }]; } [self.tableView insertRowsAtIndexPaths:indexArray withRowAnimation:UITableViewRowAnimationBottom]; [self.tableView endUpdates]; } 

我为单元格使用了AutoLayout,但我手动计算了高度,并根据其设备方向对其进行了caching。

身高计算器:

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { Comment* comment = self.comments[indexPath.row]; CGFloat cellHeight = [self getHeightForLayoutMode:self.screenMode forCommentID:comment.commentID]; if(cellHeight > 0) { return cellHeight; } if([comment isType2]) { [self setHeightForLayoutMode:self.screenMode forCommentID:comment.commentID height:106]; return 106; } CGFloat width = tableView.bounds.size.width - 100; NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy]; paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping; NSDictionary *attributes = @{NSFontAttributeName: [UIFont fontWithName:@"MyFont" size:11.0f], NSParagraphStyleAttributeName:paragraphStyle}; CGRect rect = [comment.message boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil]; CGFloat height = 31+ceilf(rect.size.height); [self setHeightForLayoutMode:self.streamViewController.screenMode forCommentID:comment.commentID height:height]; return height; } 

有人有这样的问题( 更新UITableView时,新的可见行丢失细胞崩溃 ),他们只是删除estimatedSectionHeaderHeight,但我没有估计SectionHeaderHeight我的代码。

我找出了问题的原因。

在我的视图控制器,我有一个textview,这将触发键盘显示。 我把UITableView固定在底部。 我将其设置为keyboardWillShow上的scrollToBottom,并在textview高度更改时调整插入。 一旦键盘显示,桌面视图几乎看不见(特别是在iPhone 5上)。

现在修复是固定tableview的底部到textview的顶部,保持相同的高度和tableview的可见性,我不需要scrollToBottom&调整插入了,因为自动布局照顾它。 希望它可以帮助别人!

干杯。

插入值时,节数超出范围时,会发生此错误。 这不是高度问题。