私は iOS 開発にまったく慣れていないので、簡単なはずのことを試すのに苦労しています。ユーザーが既存の行のいずれかをクリックするたびに、TableView に余分な行を追加します。そのアクションには本当の目的はありません。TableView の動作を理解したいだけです。
だから私は次のことをしました:
Split View ベースのテンプレートを使用し、RootViewController で行数を 30 に変更しました。
- (NSInteger)tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
return 30;
}
メソッド tableView:didSelectRowAtIndexPath は次のようになります。
- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
/*
When a row is selected, set the detail view controller's detail item to the item associated with the selected row.
*/
NSMutableArray* paths = [[NSMutableArray alloc] init];
NSIndexPath *indice = [NSIndexPath indexPathForRow:30 inSection:0];
[paths addObject:indice];
detailViewController.detailItem = [NSString stringWithFormat:@"Second Story Element %d with all its information and bla bla bla", indexPath.row];
[[self tableView] beginUpdates];
[self.tableView insertRowsAtIndexPaths:(NSArray *) paths withRowAnimation:UITableViewRowAnimationNone];
[[self tableView] endUpdates];
}
プログラムを実行して要素の 1 つをクリックすると、次のエラーが表示されます。
*** キャッチされない例外 'NSInternalInconsistencyException' が原因でアプリを終了します。理由: '無効な更新: セクション 0 の行数が無効です。更新後の既存のセクションに含まれる行数 (30) は、行数と等しくなければなりません更新前にそのセクションに含まれていた (30)、そのセクションから挿入または削除された行数 (1 挿入、0 削除) をプラスまたはマイナスします。
テンプレートが提供するコードの他の部分は変更していません。
Apple のドキュメントと次の質問への回答をかなり広範囲に読んで い ます 。
2 番目の質問は同じ問題に対処しているようですが、何が起こっているのか理解できません。dataSource とはどういう意味ですか? 私がよく理解している応答は、次のように述べています。
これは 2 段階のプロセスです。最初にデータ ソースを更新して、numberOfRowsInSection と cellForRowAtIndexPath が挿入後のデータに対して正しい値を返すようにします。行を挿入または削除する前にこれを行う必要があります。そうしないと、「行の数が無効です」というエラーが表示されます。
このデータ ソースの更新は何を意味しますか?
私は完全にイライラしているので、サンプルコードは非常に高く評価されます.
ところで、私がしようとしているのは、編集モードに入ることとは何の関係もありませんね。