Данное приложение позволяет пользователям отмечать элементы как избранные.Когда у пользователя нет сохраненных избранных, я бы хотел уведомить их об этом (в основном я ненавижу идею пустого tableView).
Мой numberOfRowsInSection
равен нулю, если нет элементов, отмеченных пользователем как избранные.Я хотел бы установить cell.textLabel.text = @ "У вас нет избранного", но когда нет элементов для таблицы, cellForRowAtIndexPath
не вызывается.
Я могу проверить numberOfRowsInSection
, чтобы получитьрезультат, когда он встречает 0 и затем проверяет 1 строку в cellForRowAtIndexPath
, а затем вставляет пользовательский текст, но что тогда, если у них есть только один любимый текст?У меня было выше, и рекомендуется ниже, но, возможно, я не делаю это правильно, вероятно, из-за того, что это fetchedResultsController с методами делегата для обновления таблицы при изменении.
Я получаю эту ошибкукогда я удаляю ячейку, когда в таблице есть только одна ячейка:
*** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-1447.6.4/UITableView.m:976
Serious application error. An exception was caught from the delegate of NSFetchedResultsController during a call to -controllerDidChangeContent:. Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (1) must be equal to the number of rows contained in that section before the update (1), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted). with userInfo (null)
и когда ячеек нет для отображения в первую очередь, происходит сбой:
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[_PFBatchFaultingArray objectAtIndex:]: index (0) beyond bounds (0)'
Вот соответствующий код:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
id <NSFetchedResultsSectionInfo> sectionInfo = [[_fetchedResultsController sections] objectAtIndex:section];
if ([sectionInfo numberOfObjects]==0) {
return 1;
} else {
return [sectionInfo numberOfObjects];
}
}
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
if ([[_fetchedResultsController sections] objectAtIndex:0]==0) {
cell.textLabel.text = @"You have no favorites";
} else {
Shows *show = [_fetchedResultsController objectAtIndexPath:indexPath];
cell.textLabel.text = show.ShowsToSerials.serialName;
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@", show.showTitle];
}
}