Странные анимации при редактировании пользовательских ячеек? - PullRequest
0 голосов
/ 11 января 2012

Я создал UITableViewCell в Xcode 4, используя IB. Но по какой-то странной причине, когда я запускаю кнопку редактирования, cell действует действительно странно и не имеет такой же анимации, как обычная ячейка табличного представления. Я не знаю, что происходит, я пытался реализовать -(void)setEditing:(BOOL)editing animated:(BOOL)animated в своем собственном классе ячеек, но все равно ничего не работает.

ОБНОВЛЕНИЕ: Мой ViewController, в котором я использую ячейку, имеет этот код под cellForAtIndex для отображения ячейки.

CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if(cell == nil)
    {
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:nil options:nil];
    for (id currentObject in topLevelObjects) 
    {
        if ([currentObject isKindOfClass:[UITableViewCell class]]) 
        {
            cell = (CustomCell *) currentObject;
            break;
        }
        return cell;
    }
}

Обычный вид:

The normal view

При нажатии кнопки редактирования:

enter image description here

edit

И даже при перелистывании он закрывает текст, когда предполагается его отодвинуть в сторону:

enter image description here

1 Ответ

2 голосов
/ 11 января 2012

Первое предложение;не используйте IB для пользовательских UITableViewCell s.

Next;убедитесь, что вы добавляете любые пользовательские представления к UITableViewCell contentView ... а не только к самой ячейке.При отображении фрагментов редактирования (например, кнопки удаления) содержимое UITableViewCell автоматически сжимается.Если у вас есть правильная маска UIViewAutoresizing на UILabel / независимо от того, что вы добавили к contentView, она будет правильно изменена / перемещена.

Редактировать, чтобы ответить на ваш вопрос в комментариях:

Так же, как и при любом другом просмотре.Вы можете сделать его классом самостоятельно или, в зависимости от ваших потребностей, создать его специально.Класс, как правило, лучший, поэтому вы можете ссылаться на любые свои пользовательские элементы, которые вы добавили в ячейку, и повторно использовать ячейки / и т. Д.

Но вот пример построения одного специального.

UIImageView * myCheckBox = ...
UILabel * myLabel = ...
UITableViewCell * cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
[cell.contentView addSubview:myCheckBox];
[cell.contentView addSubview:myLabel];
self.customCell = cell;

Редактировать # 2

- (void)layoutSubviews
{
    [super layoutSubviews];
    self.textLabel.frame = CGRectMake(50, self.textLabel.frame.origin.y, self.contentView.frame.size.width - 50, self.textLabel.frame.size.height);
}
...