gpt4 book ai didi

objective-c - UITableView 因 reloadRowsAtIndexPaths 崩溃

转载 作者:行者123 更新时间:2023-11-29 04:33:50 26 4
gpt4 key购买 nike

我有一个 iPad iOS 应用程序,其中 View 左侧显示表格 View ,右侧显示数据输入表单。右侧的数据输入表单由另一个表格 View 组成,单元格内带有 UITextFields。

当更改特定文本字段时,我需要更改左侧表格中的相应行。我正在使用通知来管理它。大多数时候,一切都工作正常,但有时,当我尝试更新左侧表格中的特定行时,应用程序会崩溃。

左侧表格 View 由与右侧表格不同的 View Controller 管理。

右侧表格文本字段在其 View Controller 中具有以下方法:

-(void)textFieldDidChange:(id)sender
{
switch (((UIView*)sender).tag) {
case TAG_QE_PAGECAPTIONTEXTFIELD:
NSLog(@" = = = = = Caption did change %@",((UITextField*)sender).text);
[getModelForm() updateCurrentPageCaption:((UITextField*)sender).text forLanguage:@"English"];
[[NSNotificationCenter defaultCenter] postNotificationName: @"pageCaptionWasChanged" object: @"PageEdit"];
break;

default:
break;
}
}

左侧表格的 View Controller 使用以下代码为通知建立监听器:

[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(eventPageCaptionWasChanged:)
name: @"pageCaptionWasChanged"
object: nil];

左侧表格的 View Controller 具有以下方法:

-(void)eventPageCaptionWasChanged:(id)alteredText
{

UITableView* tableView = (UITableView*)[ self.view viewWithTag:TAG_QE_PAGELIST_TABLEVIEW ];
int row = (int)getModelForm().currentPageNo;
NSLog(@"HPSQuestionnaireEditorController got eventPageCaptionWasChanged with %@ for row %i",alteredText,row);
NSIndexPath* indexPath = [NSIndexPath indexPathForRow:row inSection:0];
NSArray* array = [NSArray arrayWithObject:indexPath];
int modelPageCount = getModelForm().pages.count;
NSLog(@"eventPageCaptionWasChanged modelPageCount=%i",modelPageCount);
[tableView reloadRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationFade];

}

应用在 [tableView reloadRowsAtIndexPaths 行间歇性崩溃。异常(exception)的是:* -[UITableView _endCellAnimationsWithContext:]、/SourceCache/UIKit_Sim/UIKit-1914.84/UITableView.m:1037 中断言失败

有人能帮忙吗?

非常感谢。

最佳答案

页码似乎从 1 开始,但表索引从 0 开始,因此当您查找编号为 2 的行时,表实际上正在搜索第三个项目,即 0,1,2,因此是遇到越界异常。

修复此问题的最简单方法是更改​​此行。

int row = (int)getModelForm().currentPageNo;

对此

int row = (int)getModelForm().currentPageNo -1;

关于objective-c - UITableView 因 reloadRowsAtIndexPaths 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11328304/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com