私のアプリのテーブルにはUITableViewController
を使用しています。NSFetchedResultsController
を追加しました(デリゲートとしてself
を設定してください)。NSFetchedResultsControllerによって管理されているUITableViewに余分な行を追加します
しかし、NSFetchedResultsController
の述語によって生成される項目とは無関係に、テーブルの最後のセルとしてユニークなセルを追加したいと思います。このセルを常にテーブルの最下部にします。私は、単にテーブルビュー・データ・ソースに、これらの方法に1を追加しようとした
:
- (NSUInteger)numberOfSectionsInTableView:(UITableView *)sender
{
return [[self.fetchedResultsController sections] count] + 1;
}
- (NSUInteger)tableView:(UITableView *)sender numberOfRowsInSection:(NSUInteger)section
{
return [[[self.fetchedResultsController sections] objectAtIndex:section] numberOfObjects] + 1;
}
そして(テーブルのみ1部を有している)、この余分な行がそうように生成されている場合をキャッチを:
- (UITableViewCell *)tableView:(UITableView *)sender
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == [self.fetchedResultsController.fetchedObjects count]) {
//Generate the last cell in table.
} else {
//Generate the rest of the cells like normal.
}
return nil; //To keep the compiler happy.
}
インデックスが最後のセルであるかどうかをチェックし、適切に処理します。
私はまだ、実行時に次のエラーを取得していますが:
*** Terminating app due to uncaught exception 'NSRangeException',
reason: '*** -[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]'
これを引き起こしているものの任意のアイデア?または、NSFetchedResultsControllerによって制御されるテーブルビューに余分な行を追加するより良い方法はありますか?
ああ、これは実際にはこれを実装するもっと良い方法です。ありがとうございます。 (明らかに、私はまだiOSプログラミングの新機能です:-)) –
はい、それは非常にハッキーです。このアイデアは偉大なほど簡単です...どうもありがとう! – Shingoo
しかし、このように見える - http://stackoverflow.com/questions/10965098/nsfetchedresultscontroller-prepend-a-row-or-section –