Добавьте несколько строк в detailTextLabel в UITableViewCell - PullRequest
14 голосов
/ 21 августа 2010

Я использую UITableView со стилем ячейки UITableViewCellStyleValue1.

Я хочу иметь несколько строк в detailTextLabel, это возможно? Или я должен сделать собственную ячейку?

Ответы [ 3 ]

16 голосов
/ 21 августа 2010

Вы можете установить cell.detailTextLabel.numberOfLines = 2, чтобы получить 2 строки там. Однако я сомневаюсь, что UITableViewCell будет размещать метки, как вы ожидаете в этом случае. Возможно, вы захотите создать подкласс UITableViewCell и переопределить -layoutSubviews, чтобы расположить метки так, как вы хотите. Вы можете позвонить [super layoutSubviews], а затем просто настроить позиции меток. Возможно, вы захотите использовать -[NSString sizeWithFont:constrainedToSize:lineBreakMode:] для вычисления правильного размера для текстовой метки.

В качестве альтернативы, вместо создания подкласса UITableViewCell, вы можете попробовать выполнить настройки в -tableView:willDisplayCell:forRowAtIndexPath:, хотя, если ячейка когда-либо решит, что ей нужно изменить расположение, ваши настройки будут удалены. Я рекомендую вам использовать подход подклассов.

Редактировать : Кстати, с подходом подкласса, все, что вам нужно сделать, это изменить [UITableViewCell alloc] на [MyTableViewCellSubclass alloc]. Поскольку вы не вводите новые методы или свойства, переменная все еще может оставаться типизированной как UITableViewCell, и вам не придется изменять какой-либо другой код.

3 голосов
/ 21 августа 2010

detailTextLabel - это UILabel, правила переноса слов применяются точно так же, как и к создаваемой вами метке.

http://developer.apple.com/iphone/library/documentation/uikit/reference/UILabel_Class/Reference/UILabel.html#//apple_ref/occ/instp/UILabel/lineBreakMode

РЕДАКТИРОВАТЬ: Просто подумал, что вам также нужно изменить высоту ячейки, если текст выходит за некоторый порог линий. вероятно, 2 или 3 в порядке.

1 голос
/ 22 августа 2018

По крайней мере, на iOS 11 это прекрасно работает, просто добавив эту строку.

cell.detailTextLabel.numberOfLines = 2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...