Подтвердить что ты не робот

IPhone, крючок для редактирования/сделать кнопку щелчок в виде таблицы

В моем контроллере просмотра таблицы есть

self.navigationItem.leftBarButtonItem = self.editButtonItem;

который создает обычную кнопку редактирования/выполнения в верхнем левом углу. Следовательно, как только пользователь нажимает "Изменить", заголовок кнопки изменяется на "Готово", и записи в таблице могут быть удалены или переупорядочены. Я хотел бы получить уведомление, как только пользователь на самом деле щелкнет "Готово". Есть ли крючок для этого?

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

4b9b3361

Ответ 1

для тех, кто все еще интересуется этим вопросом (или ответ: P)

UITableView API

показал, что существует метод - (void)setEditing:(BOOL)editing animated:(BOOL)animate этот метод вызывается каждый раз при нажатии этой кнопки редактирования/выполнения. вам нужно просто проверить параметр (BOOL)editing, который был использован. последнее, но не менее важно, вы должны вызвать правильный метод из первоначальной кнопки редактирования/создания.

просто добавьте этот метод в свой класс uitableview

- (void)setEditing:(BOOL)editing animated:(BOOL)animate
{
    [super setEditing:editing animated:animate];
    if(editing)
    {
        NSLog(@"editMode on");
    }
    else
    {
        NSLog(@"Done leave editmode");
    }
}

Ответ 2

Для тех, кто не хочет переопределять UITableView (например, если вы используете UITableViewController), здесь простое и чистое решение, которое я использую. В основном это связано с созданием вашего собственного элемента кнопки редактирования и использованием флага tableView editing для отслеживания редактирования vs done. Для обледенения на торте он показывает кнопку "+" (вместо "Редактировать" ), когда таблица пуста для добавления новых элементов.

- (void) updateEditButtonVisibility
{
    // tableItems represents the data structure that s
    if ([tableItems count] > 0)
    {
        UIBarButtonSystemItem editButtonType = self.tableView.editing ? UIBarButtonSystemItemDone : UIBarButtonSystemItemEdit;
        UIBarButtonItem *editButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:editButtonType
                                                                                        target:self
                                                                                        action:@selector(editButtonTouched)];

        self.navigationItem.rightBarButtonItem = editButtonItem;
        [editButtonItem release];
    }
    else
    {
        UIBarButtonItem *addButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
                                                                                       target:self
                                                                                       action:@selector(addButtonTouched)];
        self.navigationItem.rightBarButtonItem = addButtonItem;
        [addButtonItem release];
    }
}

- (void) editButtonTouched
{
    // edit/done button has been touched

    [self.tableView setEditing:!self.tableView.editing animated:YES];
    [self updateEditButtonVisibility];
}

- (void) addButtonTouched
{
    // logic to allow user to add new items goes here
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [self updateEditButtonVisibility];
}

Ответ 3

Это стандартный способ получения уведомления при нажатии кнопки панели:

self.editButtonItem.target = self;
self.editButtonItem.action = @selector(buttonPushed:);

...

- (void) buttonPushed:(id)sender
{
// do stuff here
}

Ответ 4

Можно изменить действие. После нажатия кнопки редактирования появляется кнопка удаления, вместо этого можно отображать кнопки отклонения/проверки/изменения. И измените соответствующее действие вместо опции удаления

Спасибо Mindus