У приложения в вопросе есть возможность для пользователей отмечать предметы как избранные. Когда пользователь не сохраняет избранное, я хотел бы уведомить их об этом (в основном я ненавижу идею пустой таблицыView).Показывать пользовательскую метку, если нет данных для таблицыView
Мой numberOfRowsInSection
равен нулю, когда нет товаров, отмеченных как избранные пользователем. Я хотел бы установить cell.textLabel.text = @ «У вас нет избранных», но когда нет элементов для таблицы, cellForRowAtIndexPath
не вызывается.
Я могу проверить numberOfRowsInSection
, чтобы дать результат, когда он встречает 0, а затем тестирует 1 строку в cellForRowAtIndexPath
, а затем вставляет пользовательский текст, но тогда что, если у них только один фаворит?
UPDATE
Я попытался реализации идеи я имел выше, и рекомендовал ниже, но, возможно, я не делаю это правильно, вероятно, связано с тем, что это 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];
}
}
Не могли бы вы выслать код для своего решения 1? –
Даниил. Еще раз спасибо за ваш код. Просто вопрос об управлении памятью. Я освобождаю представление в dealloc (это лучше?), Но где я должен снять ярлык? –
У меня есть вид и все выпущено в dealloc. Я не верю, что для меня все течет. –