Имитация поведения UITableViewControllers для tableView: willBeginEditingRowAtIndexPath: on UIViewController - PullRequest
1 голос
/ 13 ноября 2010

В моем приложении мне нужно было использовать UIViewController для управления моим tableView вместо UITableViewController (потому что мне нужно было дополнительное представление под моим tableView). Я успешно реализовал контроллер представления (и делегат, и источник данных), но теперь мне нужно получить правильное поведение на моих UITableViewCell s, когда пользователь проводит по ячейке слева направо.

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

 - (void)setEditing:(BOOL)isEditing animated:(BOOL)animated {
     [super setEditing:isEditing animated:animated]; 
     [self.tableView setEditing:isEditing animated:animated];
    }

Но я не могу понять, как отобразить подтверждение удаления, если пользователь проводит по ячейке слева направо. Вот что у меня есть в моем tableView:willBeginEditingRowAtIndexPath: прямо сейчас:

- (void)tableView:(UITableView *)aTableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath {
 // Tell the cell to do its custom animations
 [[self.tableView cellForRowAtIndexPath:indexPath] setEditing:YES animated:YES];

 // set the viewControllers editing to YES, thus changing the editButton to a doneButton
 self.editing = YES;
}

С этим кодом editButton изменяется на doneButton, как и предполагалось, и ячейка выполняет анимацию, чтобы освободить место для подтверждения удаления, но само подтверждение удаления не отображается.

Мой вопрос: как показать подтверждение удаления в указанной табличной ячейке?

Ответы [ 2 ]

2 голосов
/ 13 ноября 2010

Убедитесь, что вы реализуете метод:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

когда это реализовано (это необходимо в любом случае, поскольку именно здесь вы обрабатываете кнопку удаления), проведите строку, чтобы показать жест кнопки удаления, для вас автоматически.

0 голосов
/ 14 ноября 2010

Я понял это сам. На самом деле все, что мне нужно было сделать, это вставить тот же код из моего setEditing: animated: в метод tableView: willBeginEditingRowAtIndexPath.

- (void)tableView:(UITableView *)aTableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath {
   [super setEditing:isEditing animated:animated]; 
   [self.tableView setEditing:isEditing animated:animated];

   //Self.editing handles the done / edit button
   self.editing = YES;
}

Это добилось цели. Я не знаю, как tableView знает, что он должен показывать кнопку удаления только для одной ячейки, но это так и работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...