ReloadData UITableView не использует ячейки

У меня есть UITableView, который реализует NSFetchedResultsControllerDelegate. Когда я нажимаю на ячейку, я загружаю другой контроллер представления, который позволяет мне редактировать сущность, представленную ячейками таблицы. Когда я закончил редактирование, он отправляет сообщение в UITableViewController, который выполняет [self.tableview reloadData];

Моя проблема в том, что reloadData, похоже, не использует данные после того, как я их изменил. Как мне это сделать. Как я могу это сделать?


person Community    schedule 04.09.2009    source источник


Ответы (3)


Непонятно, что вы пытаетесь сделать. Однако, если вы хотите, чтобы ячейки были в другом порядке для табличного представления, вы должны отсортировать его источник данных, поэтому, если сначала вы хотите, чтобы он был в порядке 1 2 3, тогда в вашем источнике данных они будут в этом порядке, но затем, если вы хотите их 2 1 3, тогда вы должны прибегнуть к тому, чтобы ваш источник данных содержал 2 1 3 в этом порядке, все зависит от того, что вы возвращаете в cellForRowAtIndexPath для каждого пути индекса, образец, который я дал, предполагает, что вы используете путь индекса строки для индексируйте в массив, который является вашим источником данных. Надеюсь, это поможет

person Daniel    schedule 04.09.2009
comment
Продолжая мысль Даниэля, reloadData не означает, что табличное представление каким-либо образом изменит данные. Это означает, что табличное представление снова запросит данные у вас. Источник данных (который вы пишете) несет ответственность за поддержание данных. - person Rob Napier; 04.09.2009
comment
Я передал массив NSSortDescriptors в NSFetchedResultsController. Когда я вызываю [self.tableView reloadData], он не сортирует новый или измененный элемент. - person ; 04.09.2009

Вы можете передать NSSortDescriptor в NSFetchedResultsController, но действительно ли вы выполнили выборку?

person georryan    schedule 02.03.2010

Вам нужно сохранить изменения, используя [NSManagedObjectContext -save:], а затем ваш NSFetchedResultsController подхватит изменение и уведомит табличное представление об обновлении. Вам не нужно вызывать -reloadData, потому что он будет обработан за вас.

Убедитесь, что ваш UITableViewController является делегатом для NSFetchedResultsController, чтобы он мог обрабатывать обновления.

person Marcus S. Zarra    schedule 03.03.2010