Триггер setEditing: animated: без использования кнопки редактирования - PullRequest
3 голосов
/ 05 февраля 2012

У меня есть 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 ]

4 голосов
/ 05 февраля 2012

Вы отправляете сообщение (setEditing) в табличное представление, вы должны отправить его в контроллер представления (предположительно, подкласс UITableViewController?).Затем он позаботится о представлении таблицы для вас.

1 голос
/ 05 февраля 2012

Хорошо, поэтому, если кто-то еще зайдет в эту ветку с той же проблемой, я покажу вам, как я решил это.

В моем обычай UITableViewCell У меня есть этот метод сейчас:

- (void)startEditMode:(UISwipeGestureRecognizer *)recognizer {

    if (self.allowEdit) {
        UITableView *table = (UITableView *)self.superview;
        UITableViewController *control = (UITableViewController *)table.dataSource;
        [control setEditing:YES animated:YES];
    }

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