Я использую UITableViewController
для таблицы в моем приложении, и я добавил NSFetchedResultsController
, чтобы предоставить данные для отображения в таблице (установка self
в качестве ее делегата).Добавить дополнительную строку в UITableView, управляемую NSFetchedResultsController
Однако я хотел бы добавить уникальную ячейку в качестве последней ячейки таблицы, не связанной с элементами, создаваемыми предикатом 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 –