2011-02-04 2 views
1

Это странно. Я правильно прокручиваю UITableViewCell в симуляторе iPad. Несмотря на то, что событие ниже огней и swipedCell не ноль, кнопка «Удалить» не появляется. На самом деле, похоже, но только иногда. Я никогда не получаю плохой доступ или сигбарт.UITableViewCell прошита, но кнопка удаления не отображается

Вот код:

- (void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer 
{ 
    if (userListSwipeRightRecognizer.state == UIGestureRecognizerStateEnded) { 
     CGPoint swipeLocation = [userListSwipeRightRecognizer locationInView:self.outletView]; 
     NSIndexPath *swipedIndexPath = [self.outletView indexPathForRowAtPoint:swipeLocation]; 
     UITableViewCell* swipedCell = [self.outletView cellForRowAtIndexPath:swipedIndexPath]; 
     [swipedCell setEditing:YES]; 

    } 
} 

Является ли это просто вопрос симулятор или я делаю что-то не так?

+0

Есть ли причина, по которой вы сами справляетесь с жестом салфетки, а не позволяете UITableView делать это автоматически? – Costique

+0

Я собираюсь также показать кнопку «изменить» в дополнительной ячейке, когда ячейка будет прокручена. То, что я делаю, может быть не лучшим. Это мое первое приложение. – Ali

ответ

0

Если вы определили свой UITableView в своем заголовке, то попробуйте:

swipedCell = [self.outletView cellForRowAtIndexPath:swipedIndexPath]; 
+0

Я уже делаю это в OP-коде. Вы имели в виду что-то еще или я вас не понимаю? – Ali

10

Если вы просто хотите, чтобы включить Проведите для удаления на вашем столе, есть гораздо более простой способ сделать это. Внесите tableView:commitEditingStyle:forRowAtIndexPath: в ваш источник данных, и в представлении таблицы автоматически будет отображаться кнопка удаления при прокрутке ячейки.

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
} 
+0

Я думаю, что на самом деле удаляет строки. Я просто пытаюсь получить кнопку удаления ... – Ali

+2

В представлении таблицы будет автоматически отображаться кнопка, если этот метод определен. Метод будет вызываться при нажатии кнопки. Если вы действительно не хотите удалять кнопку, не вызывайте deleteForRowsAtIndexPaths: внутри метода. – ughoavgfhw

+0

отличный намек, я также впервые попытался отобразить кнопку на экране, считая, что мне не нужно «совершать» действие еще ... но просто реализация пустых методов делает работу с салфетками – kuba

-1

Если вы используете пользовательскую ячейку и переопределить setEditing, вы должны вызвать супер метод или ваши Удалять элементы управления не будут нарисованы.

- (void)setEditing:(BOOL)editing animated:(BOOL)animated { 
    [super setEditing:editing animated:animated]; 
} 
Смежные вопросы