Проведите пальцем, чтобы удалить, не показывая кнопку удаления
Я определенно что-то здесь упускаю. Это не должно быть так сложно. Я пытаюсь реализовать базовую функцию удаления для списка элементов в UITableView на iPad. Кажется, что все работает, за исключением случаев, когда ячейка перемещается влево, там нет кнопки удаления, просто пустое пространство. Ниже то, что я имею в соответствующих функциях.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
if (self.state == AMListMenu && [indexPath row] > 1)
{
return YES;
}
return NO;
}
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (self.state == AMListMenu && [indexPath row] > 1)
{
return UITableViewCellEditingStyleDelete;
}
return UITableViewCellEditingStyleNone;
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
else if (editingStyle == UITableViewCellEditingStyleInsert) {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
РЕДАКТИРОВАТЬ:
Просто пробуя случайные вещи, я добавил следующий код. Когда я смахиваю ячейку списка, я вижу, что созданная мной красная кнопка удаления появляется на долю секунды, а затем скользит по правому краю ячейки. Итак, судя по всему, iOS отодвигает представление editAccessory от края ячейки. Все еще пытаюсь понять, почему.
- (void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath
{
MainMenuCell *cell = (MainMenuCell *)[tableView cellForRowAtIndexPath:indexPath];
UIButton* btn = [[UIButton alloc]init];
[btn setTitle:@"DELETE" forState:UIControlStateNormal];
[btn setTitleColor:AMColorWhite forState:UIControlStateNormal];
[btn setBackgroundColor:AMColorTradeMarkRed];
[btn setFrame:CGRectMake(242, 0, 90, cell.frame.size.height) ];
[cell setEditingAccessoryView:btn];
[cell.contentView addSubview:btn];
}
1 ответ
Я должен был опубликовать это некоторое время назад, но я забыл. Судя по всему, iOS изменяла размер слайда в меню ViewController на весь экран без веской причины, не меняя подпредставления элементов списка. Поэтому, когда я провел пальцем, чтобы удалить, кнопка удаления была скрыта под основным видом родительского ViewController. Следующая строка кода исправила проблему.
[self.mainMenu.view setFrame:CGRectMake(0, 0, MENUWIDTH, self.view.frame.size.height)];