2017-02-03 7 views
0

Быстрый вопрос: у меня есть UITableViewController, общая настройка работает нормально. Я просто пытаюсь настроить интервал.Расчет UITableViewControllerRowHeight с detailTextLabel

В UITableViewController «s viewDidLoad я называю:

tableView.rowHeight = UITableViewAutomaticDimension 
tableView.estimatedRowHeight = 60 

Некоторые из моих стандартных ячеек используют detailTextLabel (style: .subtitle), а некоторые нет (style: .default). Когда они это делают, ячейки, похоже, не корректируют высоту строки. Текст выглядит переполненным, особенно когда detailTextLabel - две строки.

Мне не хотелось переопределять функцию tableView:heightForRowAtIndexPath:? Есть ли трюк?

Благодаря

+0

Любые быстрые экраны того, что происходит? :) –

+0

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

+0

Используйте ограничения. и метод делегирования. –

ответ

1

Это поведение по умолчанию системы клетки. Если вы ожидаете другого выхода, просто создайте свою собственную ячейку и дайте верхние и нижние ограничения по своему усмотрению. Удачи;)

+0

Я пробовал это, но когда я установил 'topAnchor' и' bottomAnchor', метки переместились, но высота ячейки не изменилась. – Joseph

+0

Какие настройки вы сделали для ячейки? С пользовательской ячейкой я имел в виду, ячейка со своими ярлыками и ограничения, установленные для обеих этикеток. Когда есть правильные ограничения, ячейка изменяется правильно. –

+0

ok - поэтому я не должен использовать 'self.textLabel' и' self.detailTextLabel' в своем пользовательском UITableViewCell? – Joseph

0

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

- (void)awakeFromNib{ 
    [super awakeFromNib]; 
    for (NSLayoutConstraint *cellConstraint in self.constraints) { 
     [self removeConstraint:cellConstraint]; 
     id first_object = cellConstraint.first_object == self ? self.contentView : cellConstraint.first_object; 
     id seccondItem = cellConstraint.second_object == self ? self.contentView : cellConstraint.second_object; 
     NSLayoutConstraint *contentViewConstraint = 
     [NSLayoutConstraint constraintWithItem:first_object 
           attribute:cellConstraint.firstAttribute 
           relatedBy:cellConstraint.relation 
            toItem:seccondItem 
           attribute:cellConstraint.secondAttribute 
           multiplier:cellConstraint.multiplier 
            constant:cellConstraint.constant]; 
     [self.contentView addConstraint:contentViewConstraint]; 
    } 
} 
+0

Возможно, мне нужно удалить существующие ограничения. Попробуем это первым. – Joseph

+0

Сообщите мне, если удаленные ограничения будут работать для вас или нет. – Nirmalsinh

+0

nope - высота ячейки не изменяется. – Joseph

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