Добавить несколько строк в detailTextLabel в UITableViewCell
Я использую UITableView
со стилем ячейки UITableViewCellStyleValue1
.
Я хочу иметь несколько строк в detailTextLabel
, возможно ли это? Или мне нужно создать пользовательскую ячейку?
Ответы
Ответ 1
Вы можете установить cell.detailTextLabel.numberOfLines = 2
, чтобы получить 2 строки. Однако я сомневаюсь, что UITableViewCell выложит ярлыки, как вы ожидаете в этом случае. Вы можете захотеть подклассифицировать UITableViewCell и переопределить -layoutSubviews
, чтобы расположить метки так, как вы хотите. Вы можете вызвать [super layoutSubviews]
, а затем просто настроить позиции меток. Вероятно, вы захотите использовать -[NSString sizeWithFont:constrainedToSize:lineBreakMode:]
для вычисления правильного размера для текстовой метки детали.
В качестве альтернативы вместо подкласса UITableViewCell вы можете попробовать сделать твики в -tableView:willDisplayCell:forRowAtIndexPath:
, хотя, если ячейка когда-либо решит, что ей нужно переформатировать, ваши твики будут удалены. Я рекомендую вам пойти с подклассическим подходом.
Изменить: BTW, с подклассом подход, все, что вам нужно сделать, это изменить [UITableViewCell alloc]
на [MyTableViewCellSubclass alloc]
. Поскольку вы не вводите новые методы или свойства, переменная все равно может быть напечатана как UITableViewCell, и вам не придется менять какой-либо другой код.
Ответ 2
DetailTextLabel - это UILabel, правила переноса слов применяются так же, как с создаваемой меткой.
http://developer.apple.com/iphone/library/documentation/uikit/reference/UILabel_Class/Reference/UILabel.html#//apple_ref/occ/instp/UILabel/lineBreakMode
EDIT: просто подумал, вам также понадобится изменить высоту ячейки, если текст выходит за пределы порога линий. вероятно, 2 или 3 в порядке.
Ответ 3
По крайней мере, на iOS 11 это прекрасно работает, просто добавив эту строку.
cell.detailTextLabel.numberOfLines = 2;
Ответ 4
На SWIFT 4.0 и выше:
cell.detailTextLabel?.numberOfLines = 0
Если вы никогда не хотите иметь более 2 строк, не устанавливайте numberOfLines на 2 в качестве подсказок в комментариях, потому что это не эффективный способ кодирования. Это не динамично. Количество строк может различаться в зависимости от размера экрана, настроек доступности и т.д. Если для параметра numberOfLines установлено значение 0, пусть ОС использует столько строк, сколько необходимо для правильного отображения текста.