Я использую UISegmentedControl
для переключения UITableView
между двумя наборами данных (думаю, избранные и повторы). Нажатие сегментированного элемента управления перезагружает табличное представление с помощью другого набора данных.Кнопка удаления UITableViewCell не исчезает
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:anim];
Когда пользователь удаляет строку, она отлично работает. HOWEVER, когда пользователь переключает наборы данных через сегментированный элемент управления, DELETED CELL повторно используется без изменения его внешнего вида (т. Е. Красная кнопка «DELETE» все еще существует, а содержимое строки нигде не видно). Кажется, это противоположная проблема, которую большинство людей видят, что кнопка удаления не появляется.
Это код удаления:
- (UITableViewCellEditingStyle) tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewCellEditingStyleDelete;
}
- (void) tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{
if ([self.current isEqualTo:self.favorites])
{
Favorite *fav = self.favorites[indexPath.row];
NSMutableArray *mut = [self.favorites mutableCopy];
[mut removeObjectAtIndex:indexPath.row];
self.favorites = mut;
self.current = self.favorites;
[self.tableView deleteRowsAtIndexPaths:@[indexPath]
withRowAnimation:UITableViewRowAnimationAutomatic];
}
}
}
TableView установлен на одиночный выбор и self.tableView.editing == NO
. Я также пытался использовать [self.tableView reloadData]
и удалять/вставлять разницу в строках из одного набора данных в следующий. Ничего не работает.
UITableViewCell
Я использую материалы не Changed не backgroundView
или selectedBackgroundView
[EDIT]
сегментированные Control Value:
- (IBAction)modeChanged:(id)sender
{
if (self.listMode.selectedSegmentIndex == 1)
{
self.current = self.favorites;
}
else
{
self.current = self.recents;
}
// Tryin this:
[self.tableView reloadData];
// Tried this:
// [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
}
// Only 1 Section per table
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
{
return [self.current count];
}
Обновите свой вопрос, чтобы включить код, который вы имеете для обработки изменений в сегментированном элементе управления и перезагрузки таблицы. – rmaddy
@rmaddy Я добавил код - это относительно просто. –
Попробуйте вызвать 'self.editing = NO' перед вызовом' reloadData' – rmaddy