2012-01-11 4 views
0

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

UPDATE: Мои 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

ответ

2

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

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

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

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

Но вот пример построения одного ad-hoc.

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

Edit # 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); 
} 
+0

обновленный вопрос объяснить проблему дальше. – Souljacker

+0

@ Ravin455 - Я полностью понимаю вашу проблему. Я был здесь. Нет необходимости в дальнейшем объяснении. – Steve

+0

, если мне нужно добавить его программно, то как его добавить? Моя единственная проблема заключается в добавлении флажка UIButton с левой стороны. – Souljacker

Смежные вопросы