2016-12-26 2 views
1

Я хочу отобразить кнопку «Удалить» на UITableViewCell, как это видно, когда мы прокручиваем справа налево на ячейке. Мне нужно показать эту кнопку при нажатии на другую кнопку внутри ячейки.Программно показать кнопку удаления на UITableViewCell

Я попытался следующие подходы далеко:

  1. Добавление представление содержимого ячейки в целях прокрутки, а затем сдвигая Клетка на 80 пунктов в левой колонке нажмите на кнопку внутри таблицы зрения. Кнопка «Удалить» также является частью экрана прокрутки до крайнего правого экрана.
  2. Добавление UIButton в конец ячейки UITableView (первоначально скрытой с фреймом, имеющим X, начиная с правого края экрана). Затем сдвигая ячейку на 80 пунктов слева при нажатии на кнопку внутри стола вид.

Пока # 1 не отображается, кнопка # 2 показывает это хорошо. Но я не могу нажать на кнопку, поскольку она находится вне рамки с ее супер просмотра.

Любая идея, как это сделать?

Это, как я сдвигая мое содержание клеток (этот метод в моем пользовательском классе клеток.):

- (void)showCellDeleteButton { 
    if (self.isDeleteMode) { 
     return; 
    } 

    self.cellDeleteButton.hidden = NO; 
    self.isDeleteMode = YES; 
    [self disableDeleteItemButton]; 

    [UIView animateWithDuration:0.3 animations:^{ 
     CGRect cellFrame = self.frame; 
     cellFrame.origin.x -= 80.0; 
     self.frame = cellFrame; 
    } completion:nil]; 
} 

Это моя Удалить кнопка с # 2:

enter image description here

+0

В вашем show 'showCellDeleteButton' вы вызываете' [self disableDeleteItemButton]; '. Это намеренно? – Rikh

+0

Да, это намеренно отключить кнопку, которая показывает кнопку «Удалить» справа, чтобы пользователь не мог нажать на нее снова. – Abhinav

+0

О, я думал, что функция была для красной кнопки удаления! Вместо того, чтобы переместить всю ячейку, почему бы вам не поместить все ваши подпрограммы внутри 'UIView', это будет полный просмотр содержимого ячейки, при этом за ней останется скрытая кнопка. И переместите ** этот ** 'UIView' вместо всей ячейки? – Rikh

ответ

0

Вы также можете сделать это так. 1. Добавьте UIView в представление содержимого ячейки с равной шириной представления содержимого и дизайна ячейки в соответствии с вашим требованием. 2. Затем добавьте кнопку с дизайном Delete в представление содержимого ячейки, а не другое представление. 3. Когда вы хотите показать свою кнопку удаления, просто переместите свой вид на 80 пунктов влево, не перемещайте содержимое содержимого ячейки и ячейки.

+0

Когда я это делаю, кнопка внутри моей ячейки, на которую я хочу переместить контент, не поддается обсуждению. Событие tap переходит к контроллеру таблицы в 'didSelectRowAtIndexPath'. – Abhinav

+0

добавьте событие click для вашей кнопки удаления и в функции щелчка вы можете выполнить свою работу. –

+0

:). Это я уже делаю. Когда кнопка добавляется непосредственно в представление содержимого ячейки, она запускает действие, а не когда оно добавляется в другое представление, которое дополнительно добавляется в виде представления в виде содержимого в виде содержимого. – Abhinav

0

Подход 1: Я не думаю, что вы можете изменить жест пота, сделанный по умолчанию. Вы можете включить или отключить жест. Таким образом, это означает, что вы не можете много играть с кнопкой удаления по умолчанию, отображаемой при прокрутке ячейки. Что вы можете сделать, так это сделать tableView редактируемым при нажатии кнопки, а затем вы можете показать кнопку удаления. Например

- (UITableViewCellEditingStyle) tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    return UITableViewCellEditingStyleDelete; 
} 
-(void)deleteButtonTapped:(UIButton *)deleteButton{ 
    [self.tableView setEditing:YES animated:YES]; 
} 

Подход 2: Создайте свой собственный элемент, который может показать пользовательские кнопки и будет выглядеть по умолчанию. См. Ссылку ниже. https://www.raywenderlich.com/62435/make-swipeable-table-view-cell-actions-without-going-nuts-scroll-views