2016-11-05 2 views
0

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

let cell = self.tableView.cellForRowAtIndexPath(NSIndexPath(forRow: index, inSection: 0)) as! cellClass 
    cell.textLabel.text = newText as? String 

Проблема только в том, что размер метки не изменяется. Если вы перезагрузите таблицу, метка изменит размер, чтобы адаптироваться к количеству текста. Я попытался использовать layoutIfNeeded() и sizeToFit(), но метка не будет распространяться на вторую строку. Ширина не большая, в основном это не обертывание, поэтому, другими словами, высота не будет расширяться для большего количества линий.

+0

Также как и в моем ответе http://stackoverflow.com/questions/40293336/uitableviewautomaticdimension-not-working-for-resizing-cell-height/40300589#40300589 – Joe

+0

Вы пробовали 'tableView.beginUpdates()', за которым следует 'tableView.endUpdates()'? – crizzis

+0

есть что-то для beginUpdates/endUpdates. Он делает то, что я хочу, но проблема в том, что иногда этот ярлык быстро обновляется, и, похоже, он падает, когда это происходит. Для обновления или двух он работает. Я попытался получить основную очередь, но все еще рушился. Любая идея, почему это так? –

ответ

0

Прежде всего, я бы рекомендовал создать пользовательскую ячейку (подкласс UITableViewCell) и назвать UILabel чем-то другим, например articleTitleLabel (в зависимости от вашего контекста). «textLabel» - это унаследованное свойство, и, я думаю, вы все равно можете его использовать, но убедитесь, что вы настроили его внутри метода «awakeFromNib» (установите numberOfLines = 0 или 2). Я также рекомендовал бы добавить общедоступный метод экземпляра внутри пользовательского класса ячеек. Что-то вроде этого:

function configureWithText(text: String) { 
    articleTitleLabel.text = text 
    // or, textLabel.text = text 
} 

Кроме того, возможно, потребуется создать файл .xib для пользовательской ячейки, и установить некоторые сверху, снизу, слева и справа ограничения на наклейке.

Надеюсь, это поможет!

+0

Не работает. Я уже делаю большинство из этих вещей и добавляю функцию вместо прямого изменения текста, но он делает то же самое. –

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