Обновление TableView с помощью кнопки в каждой ячейке после нажатия BarButtonItem - PullRequest
0 голосов
/ 07 ноября 2011

У меня есть tableviewcontroller с панелью навигации, которая имеет barbuttonitem, называемый editBarButton.Когда нажата editBarButton, я хочу, чтобы мой вид таблицы обновлялся новой кнопкой в ​​каждой ячейке с надписью «Редактировать».Как правильно это реализовать?

- (void)onEditBarButtonPressed{
    //TODO: update cells
}

Ответы [ 2 ]

0 голосов
/ 10 ноября 2011

Я нашел решение своей проблемы.

Вы должны добавить флаг BOOL уровня объекта с именем editPressed. В viewDidLoad должно быть установлено значение NO.

При создании каждой ячейки, добавьте кнопку к каждой и установите ее скрытой, если это необходимо:

[button setHidden:!editPressed];

Важно использовать флаг, чтобы при создании новых ячеек они оставляли кнопки скрытыми, если они должны быть или видны иначе.

Затем укажите уровень объекта NSMutableArray * кнопок в контроллере вида и добавьте к нему каждую кнопку:

[buttons addObject:button];

Когда вы хотите показать каждую кнопку, просто измените скрытое состояние:

editPressed = YES;
for(int i = 0; i != [butttons count]; i++){
    [[buttons objectAtIndex:i] setHidden:!editPressed];
}

Если вы хотите скрыть каждую кнопку, еще раз измените скрытое состояние:

editPressed = NO;
for(int i = 0; i != [butttons count]; i++){
    [[buttons objectAtIndex:i] setHidden:!editPressed];
}
0 голосов
/ 07 ноября 2011

Вы должны перезаписать атрибут accessoryView в UITableViewCell с помощью кнопки «Редактировать»:

Создать пользовательскую кнопку для перезаписи текущего accesoryView:

- (UIButton *) makeDetailDisclosureButton
{
    UIButton * button = [UIButton yourEditButton];

[button addTarget: self
               action: @selector(accessoryButtonTapped:withEvent:)
     forControlEvents: UIControlEventTouchUpInside];

    return ( button );
}

Затем кнопкавызовет эту процедуру, когда она будет завершена, которая затем подает стандартную процедуру UITableViewDelegate для дополнительных кнопок:

- (void) accessoryButtonTapped: (UIControl *) button withEvent: (UIEvent *) event
{
    NSIndexPath * indexPath = [self.tableView indexPathForRowAtPoint: [[[event touchesForView: button] anyObject] locationInView: self.tableView]];
    if ( indexPath == nil )
        return;

    [self.tableView.delegate tableView: self.tableView accessoryButtonTappedForRowWithIndexPath: indexPath];
}

Вы можете увидеть похожий вопрос здесь: Использование пользовательского изображения для accessoryView UITableViewCell и наличие егоответить на UITableViewDelegate

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