ビューの左側にテーブルビューが表示され、右側にデータ入力フォームが表示される iPad iOS アプリがあります。右側のデータ入力フォームは、セル内に UITextFields を持つ別のテーブルビューで構成されています。
特定のテキスト フィールドが変更された場合、左側のテーブル内の対応する行を変更する必要があります。通知を使用してこれを管理しています。ほとんどの場合、すべて正常に動作しますが、左側のテーブル内の特定の行を更新しようとすると、アプリがクラッシュすることがあります。
左側のテーブルビューは、右側のテーブルとは別のビュー コントローラーによって管理されています。
右側のテーブルのテキストフィールドには、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;
}
}
左側のテーブルのビュー コントローラーは、次のコードを使用して通知のリスナーを確立します。
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(eventPageCaptionWasChanged:)
name: @"pageCaptionWasChanged"
object: nil];
左側のテーブルのビュー コントローラーには、次のメソッドがあります。
-(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
ます。例外は:
* -[UITableView _endCellAnimationsWithContext:]、/SourceCache/UIKit_Sim/UIKit-1914.84/UITableView.m:1037 でのアサーションの失敗
誰でも助けることができますか?
どうもありがとう。