Cocoa-Touch - UITableView setEditing не будет показывать определенные ячейки - PullRequest
0 голосов
/ 30 января 2012

Я боролся с этой проблемой уже 2 часа и не могу заставить ее работать.

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

Итак, в моем методе -tableView:cellForRowAtIndexPath: я проверяю if (tableView.isEditing), чтобы настроить ячейку.Я пытался переопределить -setEditing:animated: и делать [tableView reloadData] звонки, но я просто не могу заставить его работать.

Вот как выглядит мой -setEditing:animated::

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

Мой -tableView:cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {


    NSUInteger row = [indexPath row];


    if (tableView.isEditing) {

            // Other tableview code has been omitted

            UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
                                                           reuseIdentifier:nil];

            // Set the background view of the cell to be transparent        
            UIView *backView = [[UIView alloc] initWithFrame:CGRectZero];
            backView.backgroundColor = [UIColor clearColor];
            cell.backgroundView = backView;

            UIButton *deleteButton = [UIButton buttonWithType:UIButtonTypeCustom];
            [deleteButton setFrame:[cell.contentView frame]];
            [deleteButton setFrame:CGRectMake(0, 0, cell.bounds.size.width-20, 44)];
            [deleteButton setBackgroundImage:[UIImage imageNamed:@"redbutton.png"] forState:UIControlStateNormal];
            [deleteButton setTitle:@"Delete Group" forState:UIControlStateNormal];
            [deleteButton.titleLabel setFont:[UIFont boldSystemFontOfSize:20]];
            [deleteButton.titleLabel setShadowColor:[UIColor lightGrayColor]];
            [deleteButton.titleLabel setShadowOffset:CGSizeMake(0, -1)];
            [deleteButton addTarget:self action:@selector(deleteGroup) forControlEvents:UIControlEventTouchUpInside];

            [cell.contentView addSubview:deleteButton];

            return cell;

        }
}

И я вызываю [self setEditing:YES animated:YES]; из метода, когда пользователь касается кнопки Изменить.Я также пытался просто позвонить [super setEditing:YES animated:YES]; и [self.groupDetailsTableView setEditing:YES animated:YES];

1 Ответ

0 голосов
/ 30 января 2012

Сам нашел ответ на http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/ManageInsertDeleteRow/ManageInsertDeleteRow.html#//apple_ref/doc/uid/TP40007451-CH10-SW19

Очевидно, -tableView:cellForRowAtIndexPath: не вызывается автоматически при вызове -setEditing:animated:

Поэтому, чтобы новая ячейка "появилась", я установилальфа до 0,0, а затем 1,0 после вызова setEditing ...

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