Триггер setEditing: анимированный: без использования кнопки редактирования
У меня есть UITableView
с некоторыми пользовательскими ячейками в нем. В этих пользовательских ячейках я определил UILongPressGestureRecognizer
, который запускает режим редактирования этой таблицы. Поэтому, когда кто-то нажимает и удерживает ячейку в течение примерно 1,5 секунды, таблица переходит в режим редактирования.
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(startEditMode:)];
Какие триггеры:
- (void)startEditMode:(UISwipeGestureRecognizer *)recognizer {
if (self.allowEdit) {
UITableView *table = (UITableView *)self.superview;
[table setEditing:YES animated:YES];
}
}
Но то, что я хочу сделать, это определить, когда таблица переходит в режим редактирования, потому что мне нужно показать/скрыть некоторые дополнительные кнопки в этом случае. Но почему-то в моем viewcontroller это никогда не выполняется:
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
NSLog(@"SET EDITING");
[super setEditing:editing animated:animated];
}
Любой предложение почему? Это просто вызывается при использовании правильной кнопки редактирования, как предусмотрено по умолчанию в UINavigationController?
Или как я могу определить, когда мой UITableView переходит в режим редактирования?
2 ответа:
Вы отправляете сообщение (setEditing) в табличное представление, вы должны отправлять его в контроллер представления (предположительно подкласс UITableViewController?). Затем он позаботится о представлении таблицы для вас.
Итак, если кто-то еще войдет в этот поток с той же проблемой, я покажу вам, как я решил эту проблему.
В моем обычае
UITableViewCell
теперь у меня есть этот метод:- (void)startEditMode:(UISwipeGestureRecognizer *)recognizer { if (self.allowEdit) { UITableView *table = (UITableView *)self.superview; UITableViewController *control = (UITableViewController *)table.dataSource; [control setEditing:YES animated:YES]; } }