2010-12-30 2 views
0

У меня есть UITableView с пользовательскими фоновыми изображениями для ячеек. У меня есть 4 изображения в зависимости от того, где ячейка находится в таблице. Есть один для первого ряда, средних строк, последней строки и только строки. Я в основном следил за учебником здесь: http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.htmlUITableViewCell background image path

Моя проблема возникает, когда новая ячейка добавляется в таблицу. Другие ячейки не обновляются, чтобы отражать их новые позиции в строке.

Когда и как следует обновлять эти ячейки? ViewWillAppear? Или я должен добавить этот метод?

controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type 

Щас назначение фонового изображения происходит в configureCell: atIndexPath функция, что я звоню в cellForRowAtIndexPath:

ответ

0

Если есть не то, что многие клетки, вы можете просто вызвать метод reloadData на UITableView.

Однако более эффективным подходом было бы использовать что-то вроде метода reloadRowsAtIndexPaths:withRowAnimation:UITableView, чтобы перезагрузить требуемые строки. (Вы, вероятно, захотите взглянуть на ссылку NSIndexPath, чтобы увидеть, как она сопоставляется с таблицами.)

+0

Как получить строку перед строкой, которая только что обновилась. Поскольку я использую fetchedResultsController, я при условии, что я могу поместить его в вставной случае этого метода: - (недействительными) контроллер: (NSFetchedResultsController *) контроллер didChangeObject: (идентификатор) anObject atIndexPath: (NSIndexPath *) indexPath forChangeType: (NSFetchedResultsChangeType) типа newIndexPath: –

+0

Это lw будет «[indexPath row] - 1», если это имеет смысл. –