2016-02-08 2 views
0

Когда я пытаюсь обновить свою таблицу **UITableview**, используя код ниже, мои ячейки становятся меньше. Мне было интересно, сталкивался ли кто-то с той же проблемой и знал бы, почему это происходит.Несогласованный размер UITableViewCell при обновлении ячеек

NSMutableArray* indexPaths = [[NSMutableArray alloc] init]; 
for (int i = 20; i < 20 + 20; i++) { 
    [indexPaths addObject:[NSIndexPath indexPathForRow:i inSection:0]]; 
} 

[self.tableView beginUpdates]; 
[self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:(UITableViewRowAnimationBottom)]; 
[self.tableView endUpdates]; 

....

+0

Возможно, это вопрос автомакета, который вы проверили? –

+0

Это я подозреваю, но не знаю с чего начать. Он восстанавливается до нормального, но я прокручиваю вниз. Возможно, стоит отметить, что я использую собственный класс TableViewCell. И в setFrame я установил некоторый ' - (void) setFrame: (CGRect) frame { frame.origin.x + = 5; frame.origin.y + = 5; frame.size.width - = 2 * 5; frame.size.height - = 2 * 5; [super setFrame: frame]; } ' – CreativityKills

+0

Я отправляю ответ для настройки автоматического макета. которые могут решить вашу проблему. –

ответ

0

Может быть, вы не дали реализацию метода UITableViewDelegate:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
{ 
    return 44.0;//your default row height 
} 
+0

Высота правильная. Я использую пользовательскую ячейку. – CreativityKills

3

@CreativityKills.

Если ваш макет авто включен, попробуйте следующий метод для добавления после добавления строк. Это может помочь вам, если это проблема автоматической компоновки.

NSMutableArray* indexPaths = [[NSMutableArray alloc] init]; 
for (int i = 20; i < 20 + 20; i++) { 
    [indexPaths addObject:[NSIndexPath indexPathForRow:i inSection:0]]; 
} 

[self.tableView beginUpdates]; 
[self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:(UITableViewRowAnimationBottom)]; 
[self.tableView endUpdates]; 
[self adjustHeightOfTableview]; 


- (void)adjustHeightOfTableview 
{ 
    CGFloat height = self.tableView.contentSize.height; 
    CGFloat maxHeight = self.tableView.superview.frame.size.height - self.tableView.frame.origin.y; 

    // if the height of the content is greater than the maxHeight of 
    // total space on the screen, limit the height to the size of the 
    // superview. 

    if (height > maxHeight) 
     height = maxHeight; 

    // now set the height constraint accordingly 

    [UIView animateWithDuration:0.25 animations:^{ 
     self.tableViewHeightConstraint.constant = height; 
     [self.view setNeedsUpdateConstraints]; 
    }]; 
} 

Надеюсь, это может вам помочь.

+0

Привет, спасибо за ваш ответ, я думаю, что вы на правильном пути, но высота уже сплошная, меняется ее ширина. – CreativityKills

+0

@CreativityKills вы можете изменить одну и ту же функцию по ширине. –

+0

Я пробовал это и не работал. Я удалил все вставки, и он работает так, как ожидалось. – CreativityKills

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